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

时间:2012-08-13 19:51:13

标签: c# outlook vsto outlook-addin

我正在编写 Outlook加载项,需要确定选定的电子邮件是来自Inbox还是Sent Items,以便我可以使用folder =“标记电子邮件我将其保存在数据库中时收件箱“或”已发送“。

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

1 个答案:

答案 0 :(得分:5)

您需要查看MailItem.Parent并将其投放到Outlook.Folder。获得Folder后,您可以通过Folder.Name访问显示名称。如果要确定所选项是否是Inbox的子文件夹,则需要递归调用Parent树,直到Parent为空,才能找到根父文件夹。

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...

显然,您应该将错误处理对象处理添加到此示例代码中。