Python SMTP Email Code - How to Send HTML Email from Python Code with Authentication at SMTP Server

June 15, 2022


This post has the complete code to send email through smtp server, with authentication.


We need following parameters:

  • SMTP Server host address
  • SMTP Server port
  • Sender Email
  • Sender Email Credentials

from smtplib import SMTP_SSL as SMTP
from email.mime.multipart import MIMEMultipart

from email.mime.text import MIMEText

class EmailClient:
  def __init__(self):
    self._mail_server = '<Your-email-smtp-server>'
    self._mail_server_port = 587 # <smtp-server port number>
    self._sender = "<sender email address>"
    self._credentials = {
      "username": "<sender email address>",
      "password": "<password>"

  def send_mail(self, recipients, subject, email_body):    
    msg = MIMEMultipart()
    body = MIMEText(email_body, 'html')
    msg['Subject'] = subject

    with SMTP(self._mail_server,port=self._mail_server_port) as conn:
      conn.login(self._credentials['username'], self._credentials['password'])

      conn.sendmail(self._sender, recipients, msg.as_string())

Similar Posts

Latest Posts