Outlook MailItem:如何区分邮件是传入还是传出?

Tom*_*fka 12 c# outlook vsto mailitem

我在C#中编写VSTO Outlook插件,我需要区分,无论是MailItem是传入还是传出(或者两者都不是,例如它是草稿).

有一些万无一失的方法吗?我现在的最佳解决方案是获取收件人,cc和bcc的列表,从活动帐户加载电子邮件地址,并检查这两个列表是否相交,但这对我来说似乎非常脆弱,我希望有更好的解决方案.

使用案例:我想获得一封电子邮件的相关日期,可能是ReceivedTime或SentOn,但要知道我应该使用哪一个,我想知道邮件是发送还是收到.

谢谢你的想法:)

小智 19

来到此页面是因为我在VBA中遇到了同样的问题.检查父文件夹很麻烦,因为消息可以保存在多个文件夹中(因此您必须迭代多个文件夹)或者用户可能已经更改了文件夹.一个极端的例子:已删除的项目文件夹包含传入和传出的邮件项目.

我选择了另一个人(Adi Kini)的类似解决方案,我检查了ReceivedByName(我认为他选择了ReceivedEntryID).对于已发送的消息,ReceivedByName属性始终为Null(""),无论它在何处放置.此方法可以找到已拖动到收件箱的已发送项目!这似乎是一种相当可靠的检查方法.

奇怪的是,检查邮件是传入还是传出这样一个显而易见的事情可以让我们失望!


Dou*_* L. 0

查看 MailItem 的 .Parent 属性 - 检查文件夹属性以确定它是否是收件箱、发件箱、草稿、已发送项目等。