确定所选电子邮件是来自收件箱还是已发送的项目

ame*_*908 4 c# outlook vsto outlook-addin

我正在编写一个Outlook加载项,需要确定所选的电子邮件是否来自InboxSent Items当我将其保存在我的数据库中时,我可以用folder ="Inbox"或"Sent"来标记该电子邮件.

我了解我可以将文件夹名称与收件箱或已发送邮件进行比较并确定文件夹,但是,如何确定所选电子邮件何时位于收件箱中的其中一个子文件夹中.是否有FolderType属性来检查所选电子邮件的文件夹是收件箱还是已发送(类似于识别项目类型OlItemType)?

Sli*_*SFT 5

你需要看一下MailItem.Parent并把它投到一个Outlook.Folder.获得后Folder,您可以通过访问显示名称Folder.Name.如果要确定所选项是否是子文件夹Inbox,则需要递归调用Parent树,直到Parent为null以查找根父文件夹.

Outlook.Explorer explorer = Globals.ThisAddIn.Application.ActiveExplorer();
Outlook.MailItem mailItem = explorer.Selection.OfType<Outlook.MailItem>().First();
Outlook.Folder parentFolder = mailItem.Parent as Outlook.Folder;
if (parentFolder.Parent == null) // we are at the root
{
  string folderName = parentFolder.Name;
}
else
  // .. recurse up the parent tree casting parentFolder.Parent as Outlook.Folder...
Run Code Online (Sandbox Code Playgroud)

显然,您应该为此示例代码添加错误处理对象处理.