如何在 C# VSTO 插件中处理邮件传递失败通知
How to handle mail delivery failure notice in a C# VSTO Addin
我正在开发一个 C# VSTO Outlook 插件,它可以从收到的邮件中提取一些信息。对于普通邮件,这工作正常,但如果它是邮件送达通知,则失败,因为它不是邮件项目。
foreach (Outlook.MailItem mail in outlookApp.ActiveExplorer().Selection)
{
//get some information
}
错误信息是:
System.__ComObject can't be converted to Microsoft.Office.Interop.Outlook.MailItem E_NOINTERFACE
这种邮件有什么办法查询信息吗?
您可以尝试将 NDR 邮件投射到 ReportItem class。 ReportItem
对象类似于 MailItem
对象,它包含来自邮件传输系统的报告(通常是未送达报告)或错误消息。
与其他 Microsoft Outlook 对象不同,您无法创建此对象。当从邮件传输系统收到任何报告或一般错误时,将自动创建报告项目。
此外,我建议使用 for
循环而不是 'foreach',这样您就可以立即释放底层 COM 对象。
我正在开发一个 C# VSTO Outlook 插件,它可以从收到的邮件中提取一些信息。对于普通邮件,这工作正常,但如果它是邮件送达通知,则失败,因为它不是邮件项目。
foreach (Outlook.MailItem mail in outlookApp.ActiveExplorer().Selection)
{
//get some information
}
错误信息是:
System.__ComObject can't be converted to Microsoft.Office.Interop.Outlook.MailItem E_NOINTERFACE
这种邮件有什么办法查询信息吗?
您可以尝试将 NDR 邮件投射到 ReportItem class。 ReportItem
对象类似于 MailItem
对象,它包含来自邮件传输系统的报告(通常是未送达报告)或错误消息。
与其他 Microsoft Outlook 对象不同,您无法创建此对象。当从邮件传输系统收到任何报告或一般错误时,将自动创建报告项目。
此外,我建议使用 for
循环而不是 'foreach',这样您就可以立即释放底层 COM 对象。