我有一个C#Outlook加载项应用程序(VS2005和2003 Outlook),它可以读取传入的电子邮件并删除附件和电子邮件文本正文以供将来处理。偶尔我会收到一封包含数字签名的电子邮件。当我尝试访问mailitem.body属性时,应用程序将失败,抛出以下异常:
System.Runtime.InteropServices.COMException(0xAB404001):操作失败。 在Microsoft.Office.Interop.Outlook._MailItem.get_Body() at MyLib.MyApp.OutlookAddin.MailProcessor.ProcessMailItem(MailItem mailItem)
我很确定这是引起问题的数字签名,因为如果我将电子邮件转发给自己,它将剥离原始发件人的数字签名,并且加载项应用程序将处理电子邮件而没有任何问题。我不知道该怎么做。我需要处理电子邮件,所以我不能忽略它。以某种方式获取原始电子邮件的正文而不抛出异常将是理想的。或者我想如果我能确定存在与电子邮件相关联的数字签名,我可以将电子邮件转发给自己,但这看起来有点混乱。有没有人有任何建议/修复?谢谢你的帮助。
答案 0 :(得分:1)
后续行动。我最终做的是在try..catch块中抛出get_body调用。如果出现错误,我将电子邮件移动到另一个Outlook文件夹进行手动处理。这是我在微软论坛上发布的问题的链接以及我收到的回复。 http://social.msdn.microsoft.com/Forums/en-US/vsto/thread/d8b29cff-7656-4440-920a-21047c1ff82f