使用win32com模块在Python中向多个收件人发送邮件

26 投票
2 回答
35486 浏览
提问于 2025-04-18 00:07

我正在使用win32com来发送邮件,等我的代码执行完毕后。不过,我不知道怎么把邮件发给不止一个人。现在我只能把自己加到抄送(cc)里,但不能加到收件人列表里。

这是我的代码:

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()

但是如果我尝试这样做:

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

就会出现一个错误:

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)

有没有人能帮帮我?

2 个回答

0

把这个列表转换成一个字符串,记得在每个收件人的后面加上';'。

newMail.To = "".join(<your_list>)
33

试着用分号来分隔:

newMail.To = 'Amy; john; sandy'

如果你在网上搜索“outlook interop createitem”,你会找到关于 MailItem.To 的文档,里面有详细解释。

更新:这不是一个Outlook脚本,而是一个使用Python的win32com模块来控制Outlook的Python脚本。我提到的文档是关于Outlook的COM接口的VB/C#文档(比如OlItemType的可能值)。

撰写回答