I’m attempting to start some Outlook 2007 automation with Python. I got this great script (below) from Steve Townsend on this thread: Send Outlook Email Via Python?
but I’m having trouble getting started with this.
import win32com.client
def send_mail_via_com(text, subject, recipient, profilename="Outlook2007"):
s = win32com.client.Dispatch("Mapi.Session")
o = win32com.client.Dispatch("Outlook.Application")
s.Logon(profilename)
Msg = o.CreateItem(0)
Msg.To = recipient
Msg.CC = "moreaddresses here"
Msg.BCC = "address"
Msg.Subject = subject
Msg.Body = text
#attachment1 = "Path to attachment no. 1"
#attachment2 = "Path to attachment no. 2"
#Msg.Attachments.Add(attachment1)
#Msg.Attachments.Add(attachment2)
Msg.Send()
send_mail_via_com("test text","test subject", "removed@security.obv","Outlook2007")
But I get the following Errors:
Traceback (most recent call last):
File "C:\Python32\lib\site-packages\win32com\client\dynamic.py", line 83, in _
GetGoodDispatch
IDispatch = pythoncom.connect(IDispatch)
pywintypes.com_error: (-2147221005, 'Invalid class string', None, None)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\PROJECTS\Python\send_mail_test.py", line 25, in <module>
send_mail_via_com("test text","test subject", "removed@security.obv","Outloo
k2007")
File "C:\PROJECTS\Python\send_mail_test.py", line 4, in send_mail_via_com
s = win32com.client.Dispatch("Mapi.Session")
File "C:\Python32\lib\site-packages\win32com\client\__init__.py", line 95, in
Dispatch
dispatch, userName = dynamic._GetGoodDispatchAndUserName(dispatch,userName,c
lsctx)
File "C:\Python32\lib\site-packages\win32com\client\dynamic.py", line 108, in
_GetGoodDispatchAndUserName
return (_GetGoodDispatch(IDispatch, clsctx), userName)
File "C:\Python32\lib\site-packages\win32com\client\dynamic.py", line 85, in _
GetGoodDispatch
IDispatch = pythoncom.CoCreateInstance(IDispatch, None, clsctx, pythoncom.II
D_IDispatch)
pywintypes.com_error: (-2147221005, 'Invalid class string', None, None)
It’s probably something silly that I’ve missed.
It’s Python 3.2 and PyWin32 has been installed
Many Thanks
never mind…
This works on Python 3.2.3 with PyWin32 installed. I have commented out some lines for if you want to play with this.
[2017 EDIT] – adding HTML email support (in case it’s handy for anyone)