【问题标题】:Adding attachment creates new MailItem in Outlook Inbox folder添加附件会在 Outlook 收件箱文件夹中创建新的 MailItem
【发布时间】:2019-03-17 01:45:19
【问题描述】:

我正在处理一次通过 Outlook 创建的空 msg 文件。以下代码将附件添加到电子邮件(您可以使用msg.SaveAs(Path=save_path) 保存它)。

import win32com.client

msg_path = r'C:\email.msg'
attachment_path = r'C:\specimen.pdf'

outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
msg = outlook.OpenSharedItem(msg_path)

msg.Attachments.Add(Source=attachment_path)

问题:最后一行 msg.Attachments.Add(Source=attachment_path) 在收件箱文件夹中创建了一个新的重复邮件。

我在这里找到了有关该问题的旧讨论: Adding attachment creates new MailItem in inbox folder。 以下是那里的一些引文:

OpenSharedItem 总是创建一个临时消息并导入 味精文件的内容;它不能直接与指定的 文件。

问题是当您添加 附件,但您对此无能为力。

重要的部分是 OOM 使用 MSG 文件 - 一旦它被导入到 Outlook 文件夹之一的邮件中, 原始味精文件不在图片中。

是否有任何解决方法可以阻止 Outlook 在收件箱文件夹中创建新邮件?如果没有,如何让 Outlook 将其保存在垃圾邮件文件夹中?

我的目标是修改现有的空味精文件:添加主题行和附件。

【问题讨论】:

  • 事实证明,即使是 msg 文件中的手动附件(插入 -> 附加文件)也会在收件箱文件夹中创建一个新邮件。
  • 手动撰写新电子邮件,将文件附加到其中,然后另存为 msg 独立文件不会在收件箱文件夹中创建新电子邮件。

标签: python outlook win32com


【解决方案1】:

回答我自己的问题,

这个想法是创建一个新邮件而不是修改现有邮件。 代码如下:

outlook = win32com.client.Dispatch("Outlook.Application")
msg = outlook.CreateItem(0)
msg.Attachments.Add(Source=str(attachment_path))
msg.SaveAs(Path=save_path)

【讨论】:

  • 但是您的代码不会从现有的 MSG 文件中导入任何数据。
  • 正确,这不应该是因为我正在处理一个空的 MSG 文件:没有可导入的内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-20
  • 1970-01-01
  • 2017-02-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多