8

Outlook で受信したメールを読み取るアプリケーションを作成しています。

読み取りプロセスは次のようなものです。

using Outlook = Microsoft.Office.Interop.Outlook;

var app = new Outlook.Application();
var ns = app.GetNamespace("MAPI");
ns.Logon(null, null, false, false);

var inboxFolder = ns.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);
var subfolder = inboxFolder.Folders["MyFolderName"];

foreach (Outlook.MailItem item in subfolder.Items)
{
    // do something
    // item.EntryID
}

ループ内itemのすべてに対して一意の ID を取得する必要があります。foreach

私が使用したEntryIDプロパティがありOutlook.MailItem、うまく機能していましたが、そのプロパティに問題があることがわかりました。メールを別のフォルダー (outlook 内) に移動するたびに、このプロパティEntryIDが変更されました。

いくつかのテストを実行したEntryIDところ、メールを別のフォルダーに移動したときに値が数文字しか変化しないことがわかりました。

どのフォルダでも一意の ID が必要です。常に一意である別のプロパティOutlook.MailItemまたはその部分文字列はありますか?EntryID

私は使用しています:

  • .NET 4.0;
  • Outlook 2010;
  • Microsoft.Office.Interop.Outlook.dll バージョン 14.0.0.0。
4

2 に答える 2

9

そのような物件はありません。MailItem.PropertyAccessor または MailItem.UserProperties を使用して独自のプロパティを作成できますが、メッセージが別のフォルダーにコピーされると、同じ ID を持つ 2 つのアイテムが存在するため、一意ではなくなります。

于 2013-04-30T22:03:24.340 に答える