This space is available for advertisement. Please contact us if interested.
Advertise with us
email   0   28211
How to send email from Python and Django using Office 365

To send email using python script via Office 365, use below code. This code is tried and tested.

import smtplib, os
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

def send_email():
        # Create message container - the correct MIME type is multipart/alternative.
        msg = MIMEMultipart('alternative')
        msg['From'] = ""
        msg['To'] = ""        
        msg['Subject'] = "test subject"
        # see the code below to use template as body
        body_text = "Hi this is body text of email"
        body_html = "<p>Hi this is body text of email</p>
        # Create the body of the message (a plain-text and an HTML version).
        # Record the MIME types of both parts - text/plain and text/html.
        part1 = MIMEText(body_text, 'plain')
        part2 = MIMEText(body_html, 'html')

        # Attach parts into message container.
        # According to RFC 2046, the last part of a multipart message, in this case
        # the HTML message, is best and preferred.
        # Send the message via local SMTP server.
        mail = smtplib.SMTP("", 587, timeout=20)

        # if tls = True                

        recepient = []
        mail.login(<login>, <password>)        
        mail.sendmail("", recepient, msg.as_string())        
    except Exception as e:
        raise e

The email contains two body part, HTML and text. You can use Django template in email.

from django.utils.html import strip_tags
from django.template import Context, Template
from django.template.loader import get_template

template = get_template("myapp/sample_template.html")
context = Context(context_data)
body_html = template.render(context_data)			
body_text = strip_tags(body_html)

It is always advisable to store credentials in a separate config file and not to commit that file on Github.

The same code can be used to send an email via Gmail and Google Apps with slight modification.

Use the below settings:

Gmail :

Host :
Port : 587
tls : True

Google Apps:

Host :
Port : 465
tls : False

Warning: Do not send too many emails using the python script via Gmail. Your account may be blocked. Daily email limit is 500 or 1000 emails. 

If you are sending more than 500 emails daily, I recommend using Mailgun. They provide nice API and you can send 20000 emails per month for free.

Read also: How to send bulk emails using Mailgun and Python-Django.

email   0   28211

Related Articles:
Adding Email Subscription Feature in Django Application
email subscription feature in django, sending email subscription confirmation mail in django, sending email unsubscribe email in Django, Add subscription feature in Django...
How to Track Email Opens Sent From Django App
How to track email opens. Tracking email sent from django app. Finding the email open rate in Python Django. Email behaviour of users in Python Django. Finding when email is opened by user in python-django....
Sending Emails Using Python and Gmail
Python code to send free emails using Gmail credentials, Sending automated emails using python and Gmail, Using Google SMTP server to send emails using python. Python script to automate gmail sending emails, automating email sending using gmail...
Python Script 2 : Crawling all emails from a website
Website crawling for email address, web scraping for emails, data scraping and fetching email adress, python code to scrape all emails froma websites, automating the email id scraping using python script, collect emails using python script...
DigitalOcean Referral Badge

Get a .COM for just $5.98!

© 2021-2022 Python Circle   Contact   Sponsor   Archive   Sitemap   Partner Sites: PythonSnippets.Dev  99Dev.Tools