2

我正在尝试编写一个加载项,该加载项可以在加载时修改 Outlook MailItem(通过预览窗格或通过打开它)。这是我到目前为止的代码,但我似乎无法真正访问 MailItem

public partial class ThisAddIn
{
    private void ThisAddIn_Startup(object sender, EventArgs e)
    {
        Application.ItemLoad += ApplicationOnItemLoad;
    }

    private void ApplicationOnItemLoad(object item)
    {
        var mail = item as MailItem;

        if (mail != null)
        {
            Console.WriteLine(mail.HTMLBody);
        }
    }

    // Etc...
}

代码很好地到达了Console.WriteLine(mail.HTMLBody);语句,这意味着将项目转换为 Outlook MailItem 很好(它最终不会为空)。但是,我无法访问任何 MailItem 成员......它只是抛出异常:

MyOutlookProject.DLL 中出现“System.Runtime.InteropServices.COMException”
类型的第一次机会异常 mscorlib.dll 中出现“System.Reflection.TargetInvocationException”类型的第一次机会异常

4

1 回答 1

2

Application.ItemLoad在项目完全加载之前发生。除了和Item之外,您无法读取任何属性。ClassMessageClass

从 MSDN...

此事件在 Outlook 项目开始加载到内存时发生。该项目的数据尚不可用,除了 Outlook 项目的 Class 和 MessageClass 属性的值,因此在调用 Item 返回的 Outlook 项目的 Class 或 MessageClass 以外的任何属性时会发生错误

要访问MailItem预览窗格中的 ,您应该查看Explorer.Selection. 访问MailItem已打开的(通过检查器)- 杠杆Inspectors.NewInspector

于 2012-07-13T20:28:50.157 回答