I'm creating an application that is reading emails received in outlook.
The reading process is something like this:
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
}
I need to get an unique ID for every item
in the foreach
loop.
There is a EntryID
property in Outlook.MailItem
that I used and it was working well, but I found out there was a problem with that property: Whenever I moved the email to another folder (inside outlook), This property EntryID
changed.
I ran several tests and discovered that the EntryID
value changes only a few chars when I move the mail to another folder.
I need an ID that would be unique no matter what folder. Is there an another property from Outlook.MailItem
or any substring of EntryID
that is always unique?
I'm using:
There is no such property. You can create your own property using MailItem.PropertyAccessor or MailItem.UserProperties, but it will stop being unique if a message is copied to another folder as you will now have 2 items with the same id.