c# - 确定所选电子邮件是来自收件箱还是已发送邮件

标签 c# outlook vsto outlook-addin

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

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

最佳答案

您需要查看 MailItem.Parent并将其转换为 Outlook.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...

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

关于c# - 确定所选电子邮件是来自收件箱还是已发送邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11941288/

相关文章:

c# - 访问 C# float[] 作为 byte[]

c# - 简化循环获取类的属性

c# - 发布 COM 组件

c# - 将预定义的功能区按钮添加到自定义插件

c# - 打开其他 EXCEL 文件时不加载 VSTO Excel 模板

c# - 将公式添加到单元格 HRESULT : 0x800A03EC 异常

c# - 获取所有列表成员 - MailChimp 3.0

c# - 如何从同步创建异步方法

winapi - 如何找到 Outlook .pst 文件的完整路径?

email - 如何跳过具有任何类别标签的邮件,但处理没有标签的邮件?