VBA outlook在没有作为草稿打开的情况下保存.msg

时间:2017-09-12 15:54:25

标签: vba outlook msg

为什么以下链接上的代码会将电子邮件另存为草稿?当我打开已保存的电子邮件时,它会打开,作为准备发送电子邮件而不是 msg文件对象(例如,当您将电子邮件复制/粘贴到桌面时,然后打开它)。我希望在您复制/粘贴电子邮件时获得类似的结果,以便它不会作为准备发送电子邮件而打开;你能告诉我怎么做吗?提前感谢您提供的任何帮助!

Outlook VBA macro for saving emails copies in a local folder

从某些测试来看,似乎.SaveAs适用于选定的电子邮件,但由于此电子邮件是Applicaiton_ItemSend事件的一部分,因此它仍处于草稿格式...

1 个答案:

答案 0 :(得分:0)

因为当Application.ItemSend事件触发时,该消息仍处于未发送(草稿)模式。最常见的是,您可以在已发送状态下访问邮件,这是因为Items.ItemAdd事件在已发送邮件文件夹上触发。作为额外奖励,该邮件还将包含所有与发件人相关的信息。

如果您仍然需要使用Application.ItemSend事件,可以使用扩展MAPI(仅限C ++或Delphi)或Redemption(任何语言)使其显示。通常,消息可以在第一次保存之前被标记为已发送(MAPI限制),但该限制不适用于独立的MSG文件。在Redemption(在我的头顶):

set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
set Item = Session.GetMessageFromMsgFile("c:\temp\test.msg")
Item.Sent = true
Item.Save