A common task for system administrators and developers is to use scripts to send emails if an error occurs.
Why use Gmail?
Using Googles SMTP servers are free to use and works perfectly fine to relay emails. Note that Google has a sending limit: “Google will temporarily disable your account if you send messages to more than 500 recipients or if you send a large number of undeliverable messages. ” As long as you are fine with that, you are good to go.
Where do I start?
Sending mail is done with Python’s smtplib using an SMTP (Simple Mail Transfer Protocol) server. Since we will use Google’s SMTP server to deliver our emails, we will need to gather information such as server, port, authentication. That information is easy to find with a Google search.
Google’s Standard configuration instructions
Outgoing Mail (SMTP) Server – requires TLS or SSL: smtp.gmail.com
Use Authentication: Yes
Port for TLS/STARTTLS: 587
Port for SSL: 465
Server timeouts: Greater than 1 minute, we recommend 5
Account Name or User Name: your full email address (including @gmail.com or @your_domain.com)
Email Address: your email address (firstname.lastname@example.org or username@your_domain.com) Password: your Gmail password
Begin with opening up your favorite text editor and import the smtplib module at the top of your script.
Already at the top we will create some SMTP headers.
fromaddr = 'email@example.com' toaddrs = 'firstname.lastname@example.org' msg = 'Enter you message here’
Once that is done, create a SMTP object which is going to be used for connection with the server.
server = smtplib.SMTP("smtp.gmail.com:587”)
Next, we will use the starttls() function which is required by Gmail.
Next, log in to the server:
Then, we will send the email:
server.sendmail(fromaddr, toaddrs, msg)
The final program
You can see the full program below, by now you should be able to understand what it does.
import smtplib # Specifying the from and to addresses fromaddr = 'email@example.com' toaddrs = 'firstname.lastname@example.org' # Writing the message (this message will appear in the email) msg = 'Enter you message here' # Gmail Login username = 'username' password = 'password' # Sending the mail server = smtplib.SMTP('smtp.gmail.com:587') server.starttls() server.login(username,password) server.sendmail(fromaddr, toaddrs, msg) server.quit()