This is the easiest way you can start sending emails with Python using only two libraries, smtplib and email.
We will be using Gmail’s free RESTful API in this example.
import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText message = MIMEMultipart() message["To"] = 'To line here.' message["From"] = 'From line here.' message["Subject"] = 'Subject line here.' title = '<b> Title line here. </b>' messageText = MIMEText('''Message body goes here.''','html') message.attach(messageText) email = 'Your Gmail address here.' password = 'Your app password here.' server = smtplib.SMTP('smtp.gmail.com:587') server.ehlo('Gmail') server.starttls() server.login(email,password) fromaddr = 'From line here.' toaddrs = 'Address you send to.' server.sendmail(fromaddr,toaddrs,message.as_string()) server.quit()
First, let’s import smtplib then MIMEMultipart and MIMEText from email.mime.multipart and email.mime.text respectively:
import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText
We then call MIMEMultiPart() and instantiate it to the variable Message. We then give a string value to each variable which are Message, To, From and Subject, it should look like this:
Message = MIMEMultipart() Message["To"] = 'To line here.' Message["From"] = 'From line here.' Message["Subject"] = 'Subject line here.'
We'll also give a title to our email through the title variable and add a message through MIMEText() and instantiate it to the variable messageText and finally attach our email message to our main variable Message using the attach() function, it should look like this:
title = '<b> Title line here. </b>' messageText = MIMEText('''Message body goes here.''','html') Message.attach(messageText)
Let’s add our Gmail address and our App password, click the link here if you don’t know how to get one:
email = 'Your Gmail address here.' password = 'Your App password here.'
Then we'll have to connect to Gmail's SMTP server, we'll do that using the smtplib library and we'll need two variables which are the server we want to connect to and the port which are smtp.gmail.com and 587 respectively.
Using the smtplib library we'll be calling the SMTP function and add the server and port variables as its arguments, it should look like this:
smtplib.SMTP('smtp.gmail.com:587') (don't forget the : between them)
We'll then instantiate it to the variable server:
server = smtplib.SMTP('smtp.gmail.com:587')
We then add an ehlo statement using server.ehlo(‘Gmail’), this should be your domain name, this is useful when sending en email to another mail server that supports ESMTP, let’s keep it simple and just put Gmail:
server.ehlo('Gmail')
Let’s also start the TLS protocol with server.starttls(), this tells the mail server we want to send our email through a secure connection:
server.starttls()
We'll then login to the mail sever using this line:
server.login(email,password)
Let’s add a from address and to address(es), using fromaddr and toaddrs respectively:
fromaddr = 'Your Gmail address.' toaddrs = 'Destination address.'
Finally, we send our email using server.sendmail(fromaddr,toaddrs,message.as_string()) and we close our connection to the mail server using server.quit():
server.sendmail(fromaddr,toaddrs,message.as_string()) server.quit()
Save that in a file called send_email.py, open a Terminal if you're on Linux or a Command Prompt if you're on Windows and launch it using python send_email.py and you should see this:
If nothing happens, well good news it's working!
You should have received an email to your destination email(s), here's what I got:
Sending email using Python and Gmail's free SMTP server is the easiest way you can start sending email within your Python code, this is exactly what I've done when I built my first online busines ever. You can read more about it here.
The above is the detailed content of How to Send Emails in Python Using Gmail's Free SMTP Mail Server API. For more information, please follow other related articles on the PHP Chinese website!