Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Send Outlook Email Via Python?

Tags:

python

outlook

I am using Outlook 2003.

What is the best way to send email (through Outlook 2003) using Python?

like image 216
user3262424 Avatar asked Jun 13 '11 15:06

user3262424


People also ask

How do I send an email using Python?

Set up a secure connection using SMTP_SSL() and . starttls() Use Python's built-in smtplib library to send basic emails. Send emails with HTML content and attachments using the email package.


2 Answers

import win32com.client as win32 outlook = win32.Dispatch('outlook.application') mail = outlook.CreateItem(0) mail.To = 'To address' mail.Subject = 'Message subject' mail.Body = 'Message body' mail.HTMLBody = '<h2>HTML Message body</h2>' #this field is optional  # To attach a file to the email (optional): attachment  = "Path to the attachment" mail.Attachments.Add(attachment)  mail.Send() 

Will use your local outlook account to send.

Note if you are trying to do something not mentioned above, look at the COM docs properties/methods: https://msdn.microsoft.com/en-us/vba/outlook-vba/articles/mailitem-object-outlook. In the code above, mail is a MailItem Object.

like image 87
TheoretiCAL Avatar answered Oct 13 '22 04:10

TheoretiCAL


For a solution that uses outlook see TheoretiCAL's answer.

Otherwise, use the smtplib that comes with python. Note that this will require your email account allows smtp, which is not necessarily enabled by default.

SERVER = "smtp.example.com" FROM = "[email protected]" TO = ["listOfEmails"] # must be a list  SUBJECT = "Subject" TEXT = "Your Text"  # Prepare actual message message = """From: %s\r\nTo: %s\r\nSubject: %s\r\n\  %s """ % (FROM, ", ".join(TO), SUBJECT, TEXT)  # Send the mail import smtplib server = smtplib.SMTP(SERVER) server.sendmail(FROM, TO, message) server.quit() 

EDIT: this example uses reserved domains like described in RFC2606

SERVER = "smtp.example.com" FROM = "[email protected]" TO = ["[email protected]"] # must be a list  SUBJECT = "Hello!" TEXT = "This is a test of emailing through smtp of example.com."  # Prepare actual message message = """From: %s\r\nTo: %s\r\nSubject: %s\r\n\  %s """ % (FROM, ", ".join(TO), SUBJECT, TEXT)  # Send the mail import smtplib server = smtplib.SMTP(SERVER) server.login("MrDoe", "PASSWORD") server.sendmail(FROM, TO, message) server.quit() 

For it to actually work with gmail, Mr. Doe will need to go to the options tab in gmail and set it to allow smtp connections.

Note the addition of the login line to authenticate to the remote server. The original version does not include this, an oversight on my part.

like image 23
Spencer Rathbun Avatar answered Oct 13 '22 06:10

Spencer Rathbun