【问题标题】:How to handle mail delivery failure notice in a C# VSTO Addin如何在 C# VSTO 插件中处理邮件传递失败通知
【发布时间】:2021-05-27 18:59:36
【问题描述】:

我正在开发一个 C# VSTO Outlook 插件,它可以从收到的邮件中提取一些信息。对于普通邮件,这可以正常工作,但如果是邮件递送通知,则会失败,因为它不是邮件项。

foreach (Outlook.MailItem mail in outlookApp.ActiveExplorer().Selection)
    {
      //get some information
    }

错误信息是:

System.__ComObject 无法转换为 Microsoft.Office.Interop.Outlook.MailItem E_NOINTERFACE

有没有办法从这类邮件中查询信息?

【问题讨论】:

  • 什么对象是活动的 Selection Selection ?是邮箱还是mailitem?

标签: c# outlook vsto


【解决方案1】:

您可以尝试将 NDR 消息投射到 ReportItem 类。 ReportItem 对象类似于MailItem 对象,它包含来自邮件传输系统的报告(通常是未送达报告)或错误消息。

与其他 Microsoft Outlook 对象不同,您无法创建此对象。当从邮件传输系统收到任何报告或一般错误时,会自动创建报告项。

我还建议使用for 循环而不是“foreach”,以便您可以立即释放底层 COM 对象。

【讨论】:

  • 感谢您的回复。如何将我的项目转换为 ReportItem?我试过“Outlook.ReportItem rep = (Outlook.ReportItem) selection;”但这会失败并显示相同的错误消息。
  • Selection 是 Outlook 项目的集合。尝试选择第一个然后施放。
猜你喜欢
  • 2022-01-14
  • 1970-01-01
  • 2015-05-22
  • 1970-01-01
  • 1970-01-01
  • 2017-12-19
  • 1970-01-01
  • 2011-06-10
  • 1970-01-01
相关资源
最近更新 更多