簡體   English   中英

從 MailItem (Microsoft.Office.Interop.Outlook) 獲取唯一 ID?

[英]Get Unique Id From MailItem (Microsoft.Office.Interop.Outlook)?

我正在創建一個正在閱讀 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
}

我需要為foreach循環中的每個item獲取一個唯一 ID。

我使用的Outlook.MailItem中有一個EntryID屬性,它運行良好,但我發現該屬性存在問題:每當我將電子郵件移動到另一個文件夾(在 Outlook 內部)時,此屬性EntryID發生變化。

我運行了幾次測試,發現當我將郵件移動到另一個文件夾時, EntryID值只更改了幾個字符。

無論在哪個文件夾中,我都需要一個唯一的 ID。 Outlook.MailItemEntryID任何子字符串是否有另一個始終唯一的屬性?

我在用着:

  • .NET 4.0;
  • 2010 年展望;
  • Microsoft.Office.Interop.Outlook.dll 版本 14.0.0.0。

沒有這樣的屬性。 您可以使用 MailItem.PropertyAccessor 或 MailItem.UserProperties 創建您自己的屬性,但如果將郵件復制到另一個文件夾,它將不再是唯一的,因為您現在將擁有 2 個具有相同 ID 的項目。

MailItem 的唯一 ID 可以通過組合幾個電子郵件屬性來獲得,這些屬性對於任何不同的電子郵件來說都不太可能相同,例如

$"{item.SenderEmailAddress}-{item.SentOn.Ticks/TimeSpan.TicksPerSecond}-{item.Size}";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM