Send email to multiple recipients using win32com module in Python

lsheng picture lsheng · Mar 27, 2014 · Viewed 13.4k times · Source

I am using win32com to send emails after my code is done. However, I cannot figure out how to send it to more than 1 person. Now I can only add myself in cc, but not in the recipient list.

Here is my code:

import win32com.client
import datetime as date

olMailItem = 0x0
obj = win32com.client.Dispatch("Outlook.Application")
newMail = obj.CreateItem(olMailItem)
newMail.Subject = 'Hi'
newMail.Body = 'Hi'
newMail.To = 'Amy'
newMail.CC = 'Bob'    
newMail.Send()

However if I try this:

newMail.To = ['Amy','Bob']

An error occurs:

pywintypes.com_error: (-2147352567, 'Exception occurred.', (4096, u'Microsoft Office Outlook', u'Type Mismatch: Cannot coerce parameter value. Outlook cannot translate your string.', None, 0, -2147352571), 1)

Can anyone help?

Answer

Oliver picture Oliver · Mar 28, 2014

Try separating by semicolons:

newMail.To = 'Amy; john; sandy'

If you do a web search for "outlook interop createitem" you can find the docs for MailItem.To where this is explained.

Update: this is not an Outlook script, it is a Python script that uses Python's win32com module to control Outlook. The docs I'm referring to are the VB/C# docs for Outlook's COM interface (for example the possible values of OlItemType).