Python Send Email From Gmail

Posted on

Python Send Email From Gmail – Sending personal emails with Python is less secure, but sometimes important for certain use cases. Gmail used to allow the user to send emails directly in Python using the Gmail account and password. However, this method was recently removed due to serious security issues.

In this blog post, I would like to briefly explain how emails are currently sent using Python and Gmail.

Python Send Email From Gmail

Python Send Email From Gmail

Previously, we could only use Gmail account and password for Gmail SMTP login in Python when “Allow less secure apps” was enabled and Google account two-step verification was disabled for Google account. However, this is highly insecure because if someone gets their hands on the password, they can easily change it and the user loses the account forever. Even though the Google account is “available” for the user, sometimes it confuses Gmail recipients that the Gmail From address has been changed because the previous one was stolen.

Send Email Programmatically With Gmail, Python, And Flask

As of May 30, 2022, “Allow less secure apps” will no longer be allowed for any Google Account. As a result, the previous Gmail authentication method no longer works in Python.

Google encourages user to use Gmail API to manage email. However, the authentication setup process and the verification process are complicated. Credentials are stored in the application’s system environment, the application is deployed to a new environment, a manual authentication process is required. This prevents application deployment in the cloud.

However, there is another hidden method for Gmail authentication in Python that sets up an app password while enabling 2-Step Google Account Verification. App passwords let you sign in to your Google Account from apps on devices that don’t support 2-Step Verification. It’s less secure. That’s why Google doesn’t promote it. However, it’s less secure in the sense that if someone ever gets your app password, they can use your Gmail account to send emails on your behalf, but they can’t change your Google account password, if he doesn’t know. The Google account holder can change or delete the app password at any time when they find that the Gmail account has been compromised.

After setting up 2-step verification and app password for Google account, Google account security might look like this.

Sending Emails In Python [2022 Guide With Code Examples]

In the Python script, instead of the Google account password, we use the app password for Gmail SMTP authentication. You found this article because you want to send email using a Python script. Nowadays it is common to send e-mails through a system. This article will show you how to send plain text/HTML emails with/without attachments in Python.

There are many ways to send email through Python code. One of them is using the smtplib module. You need to change a setting in the gmail account to receive emails from the python script.

It is better to create a new Gmail account and use it for development because there is a chance of accidentally revealing your login details. In addition, the inbox quickly fills up with test emails. The following link will redirect you to the required Gmail settings page as shown in the image below.

Python Send Email From Gmail

Here we create two variables, one with plain text and another with HTML code, that represent two different message texts. Here you will learn how to configure plain text and HTML text in the email body.

Automatically Download Email Attachment With Python

Now the final step is to attach these two bodies to the email body and send to the Gmail account.

In the Gmail account, the email is received as follows. Both HTML and plain text are present in the mail body.

The code flow is similar to that written for a simple email with no attachments. Only a few lines of code have been added to support the attachment process.

Analytics Vidhya is a community of analytics and data science professionals. We are building the next generation data science ecosystem In this article I will teach you something funny. I will teach you how to send an email!

Sending Emails With Python

Don’t worry about me I’m not going to teach you how to sign up for Gmail and email your best friend.

Let’s assume this database stores the names of your customers as well as the products they may be interested in based on their past purchases.

Now you want to send each of your customers a personalized email addressing them by their name and suggesting new products that might interest them.

Python Send Email From Gmail

This is when the programming begins, since through the program you can send an email to each of them with a dynamic text. Instead of writing thousands of emails manually, just write a few lines of code and you’re good to go.

Send Automatic Emails Using Python

Rather than rushing through it and showing you the code, it’s better if you first learn a little about the theory of how email works under the hood.

It is actually quite simple. It’s just a set of rules that govern how two mail servers can communicate with each other.

With this in mind, you don’t need to know how SMTP works to send email using Python, but it is very important.

Python provides you with the smtplib module that abstracts all the complexities of SMTP. This module essentially implements the SMTP protocol for you. All you have to do is teach this module how to send email, sit back, relax and watch smtplib do all the heavy lifting for you.

How To Send Email Using Gmail In C#

Before I start talking about the incredibly easy way to send an email using Python, I want to start by showing you the code just to give you an idea of ​​how simple, short, and simple the code is .

This code assumes python3 and you have a Gmail email account, but the same concepts work for any email service.

The code represents a client application that communicates with your email server (running at and asks the server to send an email with the message “This message is from Python” to the E -Send to email address “[email protected]”.

Python Send Email From Gmail

If you take the code I just wrote above and try to run it directly after replacing the credentials with your specific information, you will get an error message like this.

How To Send Emails Using Python: Tutorial With Examples

By default, Gmail tries to protect your email by preventing this type of third-party access. You can manage your Gmail security settings by visiting this link and allow less secure apps. It’s off by default, so you’ll need to turn it on.

Now listen to me I strongly recommend allowing less secure apps to connect to your Gmail account, as this opens the door to some security attacks.

So here’s what I want you to do: You should allow less secure apps to easily test and experiment with the code, but when you’re done, remember to reset your security settings to their defaults.

With relaxed security, try running the code again with the correct credentials and target email address (you might want to send this email to yourself so you can test if the code actually works).

How To Send Mail From A Python Script To Gmail Account

I used the above code to email myself and here is what I received in my email inbox.

The Python module smtplib defines an SMTP client object that can be used to send email to any computer running an SMTP server.

In our case, the machine running the SMTP server is and we want our client application (running on our laptop) to be able to communicate with this server.

Python Send Email From Gmail

You can use smtplib.SMTP or smtplib.SMTP_SSL to create the client object. The difference is that smtplib.SMTP_SSL uses securely encrypted SSL protocol to connect to the SMTP server while smtplib.SMTP does not.

Send Automated Email With The Analysis Results Using Python

Gmail doesn’t allow communication over a non-SSL or non-TLS channel, so we can’t use smtplib.SMTP to communicate with Gmail.

We need some of these settings to configure our client to properly communicate with the SMTP server in Gmail.

SMTP Server Address: This is the IP address or domain name of the computer running the SMTP server. For Gmail, this address is

Requires SSL: Indicates whether the SMTP server requires communication over a secure encrypted SSL channel. For Gmail, this is a requirement. For this reason we use smtplib.SMTP_SSL instead of smtplib.SMTP

Configure (gmail) Email In Python To Prevent Users From Forwarding An Email

As we all know, Gmail naturally asks for our usernames and passwords, so authentication is a must in our case.

Port for SSL: This is the port on which the SMTP server is listening. The port number (465) plus the SMTP server address ( uniquely identifies the full address of the SMTP server, allowing our client code to communicate with it.

The difference between server address and port number is that the server address only directs you to the computer running the SMTP server.

Python Send Email From Gmail

However, there are multiple applications running on this computer, but ONLY the SMTP server is listening on port 465.

Accessing Gmail Inbox Using Python Imaplib Module

And if you want to improve your understanding of network concepts once and for all, I recommend this book by Ross and Kurose. The book is very interesting and very exciting

Send email from python gmail, python send email gmail oauth2, python send email through gmail, send email with python gmail, send secure email gmail, python send email gmail smtp, gmail api send email python, send encrypted email gmail, gmail api send email, send recurring email gmail, python gmail send email, python send email using gmail