【问题标题】:Send email to multiple recipients using win32com module in Python在 Python 中使用 win32com 模块向多个收件人发送电子邮件
【发布时间】:2014-05-06 02:08:33
【问题描述】:

我的代码完成后,我正在使用 win32com 发送电子邮件。但是,我不知道如何将其发送给超过 1 个人。现在我只能将自己添加到抄送中,而不能添加到收件人列表中。

这是我的代码:

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)

谁能帮忙?

【问题讨论】:

    标签: python email win32com


    【解决方案1】:

    尝试用分号分隔:

    newMail.To = 'Amy; john; sandy'
    

    如果您在网络上搜索“outlook interop createitem”,您可以找到MailItem.To 的文档,其中对此进行了解释。

    更新:这不是 Outlook 脚本,它是使用 Python 的 win32com 模块来控制 Outlook 的 Python 脚本。我指的文档是 Outlook 的 COM 接口 (for example the possible values of OlItemType) 的 VB/C# 文档。

    【讨论】:

    • 谢谢 我其实不知道这个模块里面发生了什么,而且我以前没有写过outlook脚本。 MailItem.To 是 Outlook 中的内置函数吗?如果是这样,我认为对于大多数问题,我可以使用 Outlook Docs。
    • @Twinkle 如果这可行,请接受答案,以便我们知道这个已解决的问题。我会澄清答案。
    • 如果你想让它更有活力,那么你应该尝试以下方法: newMail.To = ";".join([i for i in to if isinstance(to, list) == True] )。
    • 如果需要,如何添加特定的发件人姓名?
    【解决方案2】:

    将列表转换为字符串,确保添加 ';'在每个收件人的末尾:

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

    【讨论】:

      猜你喜欢
      • 2015-08-29
      • 2012-05-18
      • 2019-11-05
      • 1970-01-01
      • 2014-06-22
      • 2022-01-02
      • 1970-01-01
      相关资源
      最近更新 更多