展望版:2212 Build 15928.20282
在 64 位 Win 上运行的 32 位 Outlook。
先决条件:
有一个简单的加载项,它覆盖了 InspectorActivate 事件处理程序。
重新创建:
打开一个新消息项目
输入几个单词并出现拼写错误。
选择拼写错误的项目,然后单击一个选项。
当事件处理程序尝试访问 Outlook MailItem 的 Body 属性时,将抛出 System.AccessViolation,并且永远不会到达我的异常处理程序。
mailItem = Inspector.CurrentItem as Outlook._MailItem;
if (mailItem != null)
{
try
{
if (mailItem.Body == null) // System.AccessViolationException
{
return false;
}
else
{
return true;
}
}
catch(Exception e)
{
log.Error(e);
}
}
尝试使用 Word 编辑器访问邮件正文 - 最坏的情况,您会遇到一个可以处理的异常:
var body = Inspector.WordEditor.Content.Text;
如何处理 AccessViolationException 页面解释了如何处理从 .net Framework 4.0 开始的托管代码中的此类异常。
您也可以尝试使用
HTMLBody
属性。如果它给出相同的结果,我建议在这种情况下检索 WordEditor
实例。您可以在第 17 章:使用项目主体中阅读有关所有这些方法的更多信息。
Body
类的 MailItem
属性返回或设置表示 Outlook 项目的明文正文的字符串。要保留任何格式,您需要使用 HTMLBody
或 Word 编辑器实例。