Outlook如何知道是否已发送MSG文件?

时间:2019-06-28 22:48:25

标签: c# outlook msg

如果您开始在Outlook中编写电子邮件并将其从“草稿”拖放到桌面,则Outlook将在“发送”按钮可用且所有字段都可修改的情况下打开它。

同样,如果将收到的电子邮件拖到桌面,Outlook将以只读模式打开MSG文件。

我希望在我的c#应用程序中添加一个功能,该功能可以读取已发送的MSG文件,然后以草稿模式将其写回。到目前为止,我没有太多运气可以找到关于此的任何信息。

1 个答案:

答案 0 :(得分:0)

Outlook会查看PR_MESSAGE_FLAGS属性中的MSGFLAG_UNSENT位(您可以在OutlookSpy中看到它-单击IMessage按钮以获取Outlook文件夹之一中的消息,或者单击OpenIMsgOnIStg按钮(如果是独立MSG)文件)。

Outlook不允许您修改该标志-MailItem.Sent属性为只读。此外,只有在第一次保存消息之前,才可以设置该位(如果您在C ++或Delphi中使用扩展MAPI)。该限制不适用于独立的MSG文件-MSGFLAG_UNSENT位可以随时设置或取消设置。

如果可以选择使用Redemption,则其RDOMailSent属性是可读写的。要打开独立的MSG文件,可以使用RDOSessionGetMessageFromMsgFile方法(返回RDOMail对象)-然后可以修改Sent属性并调用RDOMail.Save