DEV Community

Rifa Faruqi
Rifa Faruqi

Posted on

Send Email with Python SMPT and Gmail is Easy!

send email to someone else is an important thing, in development it can be used to send some code such as OTP, PIN, authentication, etc.

recently, I got a project that required me to be able to send emails to users for OTP code, and it turned out to be very easy.

here is the basics step I did:

Firstly, u need to setup your google account to be able to use for sending email by Allow 2-step verification (if done, skip this step).

  • Open your Google Account.
  • In the navigation panel, select Security.
  • Under “How you sign in to Google,” select 2-Step Verification and then Get started.
  • Follow the on-screen steps. Turn on 2-step verification

Secondly, create an app password (16-digit passcode that gives a less secure app or device permission to access your Google Account).

  • Make sure 2-step verification is allowed.
  • Open create and manage your app password.
  • Add name of the app (whatever u like), and the generated password will apear like this : Image description
  • Save the password (it will use later), don't share to anyone yeah.

Lastly, here is the basic code in python that work for me to send email :

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
# creates SMTP session
s = smtplib.SMTP('smtp.gmail.com', 587)
# start TLS for security
s.starttls()
# Authentication
s.login("your_email@gmail.com", "yyaz pgow khtd xeqn")


# Create a multipart message
msg = MIMEMultipart()
msg['From'] = "your_email@gmail.com"
msg['To'] = "send_to_email@gmail.com"
msg['Subject'] = "Subject of the Email"
message = "How are you mate? This is a test email sent using Python"

# Attach the message body
msg.attach(MIMEText(message, 'plain'))

# Send the email
s.send_message(msg)
# terminating the session
s.quit()
Enter fullscreen mode Exit fullscreen mode
  • use the google account that has been setup (2-step verificiation) and use your email and the app password that has been generated as arguments in the s.login() like the code above.
  • run it, Here's a worked example :

Image description

Feel free to ask questions if you face any difficulties :)

Sources:

Top comments (0)