从C#在Outlook中打开特定的MailItem

PJW*_*PJW 2 c# outlook-2010

我想从我的C#winforms应用程序中打开Outlook中的特定电子邮件.

目前我有以下代码:

//...Get Folder & Entry ID for last Email in Sent Box

Outlook.Application myApp = new Outlook.ApplicationClass();
Outlook.NameSpace mapiNameSpace = myApp.GetNamespace("MAPI");
Outlook.MAPIFolder mySentBox = mapiNameSpace.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderSentMail);                
Outlook.MailItem myMail = ((Outlook.MailItem)mySentBox.Items[1]);
string guid = myMail.EntryID;
string folderEntryID = mySentBox.EntryID;
string folderStoreID = mySentBox.StoreID;
string mailAddressee = myMail.To;
MessageBox.Show(mailAddressee);

//...Attempt to Open that Email at a later date

Outlook.MAPIFolder getFolder = (Outlook.MAPIFolder)mapiNameSpace.GetFolderFromID(folderEntryID, folderStoreID);
Outlook.MailItem getItem = (Outlook.MailItem)getFolder.Items.Find("[EntryID] = " + guid);
getItem.Display();
Run Code Online (Sandbox Code Playgroud)

第一部分代码的第二部分将在不同的时间运行,尽管它们目前处于相同的测试方法中.

第一部分获取最近从Outlook发送的电子邮件的相关ID.这部分似乎可以作为我内置的Messagebox的证据.

然而,第二部分不起作用,我正在努力找到正确的代码来访问并打开已在第一部分中获取其ID和文件夹位置的特定mailItem.

任何人都能为我完成这个小项目.

PJW*_*PJW 5

最后通过替换以下代码行完成它...

Outlook.MAPIFolder getFolder = (Outlook.MAPIFolder)mapiNameSpace.GetFolderFromID(folderEntryID, folderStoreID);
Outlook.MailItem getItem = (Outlook.MailItem)getFolder.Items.Find("[EntryID] = " + guid);
Run Code Online (Sandbox Code Playgroud)

有了这个 ...

Outlook.MailItem getItem = (Outlook.MailItem)mapiNameSpace.GetItemFromID(guid, folderStoreID);
Run Code Online (Sandbox Code Playgroud)