添加附件会在Outlook收件箱文件夹中创建新的MailItem

时间:2018-10-11 21:24:46

标签: python outlook win32com

我正在处理一次通过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始终创建一条临时消息并导入   MSG文件的内容;它不能直接与指定的   文件。

     

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

     

重要的是,OOM​​不能使用MSG文件-   将其导入Outlook文件夹之一中的邮件后,   原始的MSG文件不在图片中。

是否有任何变通办法来防止Outlook在收件箱文件夹中创建新邮件?如果没有,如何使Outlook将其保存在“垃圾邮件”文件夹中?

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

1 个答案:

答案 0 :(得分:0)

回答我自己的问题,

此想法是创建新邮件,而不是修改现有邮件。 这是代码:

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