Send email with Outlook and Python

A simple example to send emails via Outlook and Python win32com.

import win32com.client

s = win32com.client.Dispatch("Mapi.Session")
o = win32com.client.Dispatch("Outlook.Application")
Msg = o.CreateItem(0)
Msg.To = ""
Msg.CC = "more email addresses here"
Msg.BCC = "more email addresses here"
Msg.Subject = "The subject of you mail"
Msg.Body = "The main body text of you mail"
attachment1 = "Path to attachment no. 1"
attachment2 = "Path to attachment no. 2"

11 Replies to “Send email with Outlook and Python”

  1. I wrote code like this

    import win32com.client as win32
    import psutil
    import os
    import subprocess

    # Drafting and sending email notification to senders. You can add other senders’ email in the list
    def send_notification():

    outlook = win32.Dispatch(‘Outlook.Application’)

    mail = outlook.CreateItem(0x0)
    mail.To = ‘’,
    # mail.Subject = ‘Sent through Python’
    # mail.body = ‘This email alert is auto generated. Please do not respond.’
    # mail.send

    def open_outlook():
    try:[‘C:\Program Files (x86)\Microsoft Office\root\Office16\OUTLOOK.EXE’])
    os.system(‘C:\Program Files (x86)\Microsoft Office\root\Office16\OUTLOOK.EXE’);
    print(“Outlook didn’t open successfully”)

    for item in psutil.pids():
    p = psutil.Process(item)
    if == “OUTLOOK.EXE”:
    flag = 1
    flag = 0

    if (flag == 1):

    and the error:
    Traceback (most recent call last):
    File “C:/Users/satz/PycharmProjects/PYWork/Sample/”, line 33, in
    File “C:/Users/satz/PycharmProjects/PYWork/Sample/”, line 12, in send_notification
    mail.To = ‘’,
    File “C:\Users\satz\PycharmProjects\PYWork\venv\lib\site-packages\win32com\client\”, line 565, in __setattr__
    self._oleobj_.Invoke(entry.dispid, 0, invoke_type, 0, value)
    pywintypes.com_error: (-2147352567, ‘Exception occurred.’, (4096, u’Microsoft Outlook’, u’The object does not support this method.’, None, 0, -2147352567), None)

  2. Hi,

    What if i want to change “from” of email?

    Do you know something like
    mail. from=”” or mail.sender. None of them works for me.

  3. Hi,
    My company using outlook mailer I want to sent mail for my corporate mail id ( using python.
    Please help me.

  4. com_error: (-2147352567, ‘Exception occurred.’, (4096, ‘Microsoft Outlook’, ‘Cannot add the attachment; no data source was provided.’, None, 0, -2147352567), None)

    I get this error message even though the path to the attachment is correct.

  5. Use this

    import win32com.client as win32
    outlook = win32.Dispatch(‘outlook.application’)
    mail = outlook.CreateItem(0)
    mail.SentOnBehalfOfName = ‘EMAIL’
    mail.To = ‘EMAIL’
    mail.Subject = ‘Message subject’
    mail.Body = ‘Message body’
    mail.HTMLBody = ‘HTML Message body’ #this field is optional
    # To attach a file to the email (optional):
    attachment = “Path to the attachment”


Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.