您好我正在创建一个阅读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
}
现在我需要从这个项目中获取一个唯一的ID(在foreach中)。 EntryID
中有一个Outlook.MailItem
属性,我使用它并且运行良好,但我发现了一个问题。当我将电子邮件(在Outlook中)移动到另一个文件夹时,此属性EntryID
已更改。
我运行了多次测试,发现当我将邮件移动到另一个文件夹时,EntryID
值只会改变几个字符。
无论什么文件夹,我都需要一个唯一的ID。来自Outlook.MailItem
的另一个属性或EntryID
的任何子字符串是否始终是唯一的?
我正在使用:
答案 0 :(得分:6)
没有这样的财产。您可以使用MailItem.PropertyAccessor或MailItem.UserProperties创建自己的属性,但如果将邮件复制到另一个文件夹,它将不再是唯一的,因为您现在将拥有2个具有相同ID的项目。
答案 1 :(得分:1)
MailItem的唯一ID可以通过合并一些电子邮件属性来获得,这些属性对于任何不同的电子邮件都不太可能是相同的,例如
$“ {item.SenderEmailAddress}-{item.SentOn.Ticks / TimeSpan.TicksPerSecond}-{item.Size}”;