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

June 15, 2022

Introduction

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

Requirements

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
    msg.attach(body)

    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