从 outlook 的邮件中获取失败原因

Get the failure reason from a mail in outlook

我正在 outlook 邮箱上做一些自动化,以前是 lotus notes.So我正在寻找 outlook 中的等效属性。 Lotus Notes 邮件项目有一个 item named FAILUREREASON which has the details about why the email is failed such as delivery failure reason etc. This item will be available when the mail is a delivery failure email. So when i loop through mails in inbox i can recognize which mail is a delivery failure email in inbox and which is actual required mail to be processed. But in outlook MailItem 对象,我没有找到任何获取它的选项。我搜索了任何解决方案,但找不到任何解决方案。我们可以在主题中搜索 'failure' 之类的词,但这不是一个好方法。谁能知道我需要查看的 属性 或任何其他方法。

标准退回或无法送达的电子邮件在 Outlook 中作为特殊项目使用 "REPORT.IPM.Note.NDR" 消息 class 接收,并在 Outlook [=] 中作为 ReportItem object 提供21=] 模型。您还可以通过 PR_TRANSPORT_MESSAGE_HEADERS_W MAPI 属性 在任何类型的电子邮件上阅读邮件 header 信息。

检索值的一种方法是使用 PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x007D001F")

Outlook 对象模型中的

ReportItem 对象(与 MailItem 对象无关)通过 ReportItem.Body 属性 公开 NDR 信息。在扩展 MAPI 级别(仅限 C++ 或 Delphi),属性存储在收件人 table 中 - 您可以在 OutlookSpy 中看到数据(我是其作者) - 单击 IMessage 按钮,转到 GetRecipientTable 选项卡:

对于 MailItem 对象,您可以使用 Recipient.PropetyAccessor.GetProperty 方法访问该信息,但是 ReportItem 对象不公开 Recipients 集合(不同于 MailItem 对象)。理论上可以把MessageClass属性改为"IPM.Note",记住EntryID属性的值,保存NDR,释放原件,重新打开通过调用 Namespace.GetItemFromID 将项目作为常规 MailItem 对象,然后从接收者 table 读取数据。但这意味着修改原来的NDR(它的修改时间会改变等等)。

如果使用 Redemption is an option (I am its author), its RDOReportItem object (derived from the RDOMail object) exposes the Recipients collection. You can reopen Outlook's NDR in Redemption by creating an instance of the RDOSession 对象并调用 RDOSession.GetRDOObjectFromOutlookObject 方法。可以使用 RDORecipient.Fields[].

访问收件人属性