2

Outlook MailItem がロードされたときに (プレビュー ペインまたは開いているときに) 変更できる AddIn を作成しようとしています。ここに私がこれまでに持っているコードがありますが、実際に 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 としてキャストしても問題ありません (最終的に null になることはありません)。ただし、 MailItem メンバーのいずれにもアクセスできません...例外がスローされるだけです:

タイプ 'System.Runtime.InteropServices.COMException' の初回例外が MyOutlookProject.DLL で
発生しました タイプ 'System.Reflection.TargetInvocationException' の初回例外が mscorlib.dll で発生しました

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 に答える