六帖のかたすみ

DVを受けていた男性。家を脱出して二周目の人生を生きています。自閉症スペクトラム(受動型)です。http://rokujo.org/ に引っ越しました。

outlookのアイテムからヘッダ内容を読み込む

メモ

outlookC#から操作するとき、メールのヘッダ内容だけ読み込みたいことがありますが、outlook付属のインターフェースにはヘッダを表すプロパティがありません。
長い時間をかけて調査したら、次のサイトが引っかかりました。
[Solved] Outlook add-in in C#: get message header? - CodeProject

古いバージョンのC#のコードに翻訳すると、次のようになります。
http://schemas.microsoft.com/mapi/proptag/0x007D001E
という呪文が必要だそうです。

const string PR_TRANSPORT_MESSAGE_HEADERS = "http://schemas.microsoft.com/mapi/proptag/0x007D001E";
//MailItemからヘッダ内容を得る
public static string GetHeader(Microsoft.Office.Interop.Outlook.MailItem mi)
{
    Microsoft.Office.Interop.Outlook.PropertyAccessor olPA = mi.PropertyAccessor;
    string header = (string)olPA.GetProperty(PR_TRANSPORT_MESSAGE_HEADERS);

    System.Runtime.InteropServices.Marshal.ReleaseComObject(olPA);
    return header;
}