[英]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.MailItem
或EntryID
任何子字符串是否有另一個始終唯一的屬性?
我在用着:
沒有這樣的屬性。 您可以使用 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.