Sending Emails With Python
Petran Laurentiu
Senior Frontend Developer | Nextjs | React | Vercel | AWS | AI Enthusiast
Perhaps you want to receive email reminders from your code, send a confirmation email to users when they create an account, or send emails to members of your organization to remind them to pay their dues. Sending emails manually is a time-consuming and error-prone task, but it’s easy to automate with Python.
There are many ways that we can send emails, so I will just show only two examples:
1.
import smtplib, ssl from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart sender_email = "[email protected]" receiver_email = "[email protected]" password = input("Type your password and press enter:") message = MIMEMultipart("alternative") message["Subject"] = "multipart test" message["From"] = sender_email message["To"] = receiver_email # Create the plain-text and HTML version of your message text = """\ Hi, How are you? Real Python has many great tutorials: www.realpython.com""" html = """\ <html> <body> <p>Hi,<br> How are you?<br> <a >Real Python</a> has many great tutorials. </p> </body> </html> """ # Turn these into plain/html MIMEText objects part1 = MIMEText(text, "plain") part2 = MIMEText(html, "html") # Add HTML/plain-text parts to MIMEMultipart message # The email client will try to render the last part first message.attach(part1) message.attach(part2) # Create secure connection with server and send email context = ssl.create_default_context() with smtplib.SMTP_SSL("smtp.gmail.com", 465, context=context) as server: server.login(sender_email, password) server.sendmail( sender_email, receiver_email, message.as_string() )
2.
There are multiple libraries designed to make sending emails easier, such as Envelopes, Flanker and Yagmail. Yagmail is designed to work specifically with Gmail, and it greatly simplifies the process of sending emails through a friendly API, as you can see in the code example below:
import yagmail receiver = "[email protected]" body = "Hello there from Yagmail" filename = "document.pdf" yag = yagmail.SMTP("[email protected]") yag.send( to=receiver, subject="Yagmail test with attachment", contents=body, attachments=filename, )
#staysafe