如何确定 Outlook MailItem 是否是未保存的草稿?

问题描述 投票:0回答:2

据我所知,

MailItem
上没有任何属性可以访问以发现
MailItem
是否为草稿。

可以检查

MailItem.Categories
看看它是否包括
Drafts
但这似乎不够,因为:

草稿不必存放在

Drafts
文件夹中,可以拖放到其他文件夹中

即使移出草稿文件夹,草稿电子邮件仍保持草稿状态这一事实表明必须有其他方式将

MailItem
标记为草稿,但我一直无法找到它。

建议?

c# .net outlook office-interop mailitem
2个回答
2
投票

新项目没有

EntryID
属性集。该值由 store provider 在将项目保存到商店时分配。

如果该项目已保存到商店中,您可以使用

PR_MESSAGE_FLAGS
属性值,其中包含标志的位掩码,指示消息的来源和当前状态。

此属性在第一次创建和保存消息时由客户端或消息存储提供程序初始化,然后在处理消息及其状态更改时由消息存储提供程序、传输提供程序和 MAPI 假脱机程序定期更新.

尝试检查代表以下内容的 MSGFLAG_UNSENT 值:

消息仍在撰写中。它已保存,但尚未发送。在第一个 IMAPIProp::SaveChanges 调用之前,客户端或提供程序对该标志具有读/写访问权限,此后为只读。如果客户端在发送消息时未设置此标志,则消息存储提供程序会在调用 IMessage::SubmitMessage 时设置它。通常,此标志在消息发送后被清除。

有关可能值的更多信息,请参阅PidTagMessageFlags Canonical Property


1
投票

使用

MailItem.Sent
属性 - 对于草稿(可编辑)消息它将是错误的。

© www.soinside.com 2019 - 2024. All rights reserved.