How to Send email using Python?

In this Python tutorial, we will explore different ways you can send emails using Python, including sending without an SMTP server, without a password, and using Outlook.

Send Email with SMTP Server using Python

SMTP, or Simple Mail Transfer Protocol, is the standard protocol for sending emails. Here’s how you can use Python to send an email through an SMTP server:

Steps:

Import the smtplib library:

import smtplib

Set up the SMTP server:

For Gmail:

server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()

For Yahoo:

server = smtplib.SMTP('smtp.mail.yahoo.com', 587)
server.starttls()

Log in to your email account:

server.login('your_email@example.com', 'your_password')

Send an email:

server.sendmail('your_email@example.com', 'recipient_email@example.com', 'Hello, this is a test email.')

Close the server:

server.quit()

Sending Email Without SMTP Server

Sending an email without an SMTP server in Python involves creating a direct SMTP session with the recipient’s email server. Be cautious; this method can cause your email to be flagged as spam.

Import the libraries:

import smtplib, dns.resolver

Find the MX record of the recipient’s domain:

domain = 'example.com'
records = dns.resolver.resolve(domain, 'MX')
mx_record = records[0].exchange

Establish a direct SMTP session:

server = smtplib.SMTP(mx_record, 25)

Send an email:

server.sendmail('your_email@example.com', 'recipient_email@example.com', 'Hello, this is a test email.')

Close the server:

server.quit()

Sending Email Without Password

This method is not recommended as it is less secure. However, if you have an application-specific password or an email server that doesn’t require authentication, you can use this method:

Set up the SMTP server:

server = smtplib.SMTP('smtp.example.com', 587)
server.starttls()

Send an email:

server.sendmail('your_email@example.com', 'recipient_email@example.com', 'Hello, this is a test email.')

Close the server:

server.quit()

Sending Outlook Email Using Python

You can also send emails via Outlook by using its SMTP server in Python.

Set up the Outlook SMTP server:

server = smtplib.SMTP('smtp.office365.com', 587)
server.starttls()

Log in to your Outlook account:

server.login('your_outlook_email@example.com', 'your_password')

Send an email:

server.sendmail('your_outlook_email@example.com', 'recipient_email@example.com', 'Hello, this is a test email.')

Close the server:

server.quit()

Conclusion

Sending emails through Python is a handy tool for automating communication. Whether you are using an SMTP server, sending without an SMTP server or password, or utilizing Outlook, Python has you covered.

You may also like: