当 COM 加载项尝试阅读消息时,Outlook 在拼写检查时崩溃

问题描述 投票:0回答:2

展望版: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);
    }
 }
outlook office365 outlook-addin comaddin message-body
2个回答
0
投票

尝试使用 Word 编辑器访问邮件正文 - 最坏的情况,您会遇到一个可以处理的异常:

var body = Inspector.WordEditor.Content.Text;

0
投票

如何处理 AccessViolationException 页面解释了如何处理从 .net Framework 4.0 开始的托管代码中的此类异常。

您也可以尝试使用

HTMLBody
属性。如果它给出相同的结果,我建议在这种情况下检索
WordEditor
实例。您可以在第 17 章:使用项目主体中阅读有关所有这些方法的更多信息。

Body
类的
MailItem
属性返回或设置表示 Outlook 项目的明文正文的字符串。要保留任何格式,您需要使用
HTMLBody
或 Word 编辑器实例。

© www.soinside.com 2019 - 2024. All rights reserved.