发送前添加到 MailItem 的类别不会保留

Categories added to a MailItem before sending aren't persisted

我正在拦截 Outlook 2013 的 Application.ItemSend 事件,以便在发送之前操纵分配给 MailItem 的类别。这是事件处理程序:

void Application_ItemSend(object Item, ref bool Cancel)
{
    var mail = (Outlook.MailItem)Item;
    mail.Categories = string.Join(";", "Foo", "Bar"); // Yes, the delimiter is ';' on my system.
    mail.Save(); // Do I need this?
}

问题是对 Categories 属性 的更改似乎没有正确保存。当我查看“已发送”文件夹中的邮件时,它显示为未分类。

奇怪的是,如果我在更改类别后调用 mail.ShowCategoriesDialog(),它们会按预期显示为已检查。这让我怀疑我正在对邮件的副本进行操作。

我做错了什么?


看来问题出在服务器配置上,而不是我的代码。将 Outlook 连接到 GMail 后,它按我预期的方式工作。

它适用于配置了 Gmail 帐户的 Outlook 2013(64 位)。即我可以看到在所有步骤中应用的类别 - 即,在 Visual Studio 2013 中应用类别时,在发件箱和已发送邮件文件夹中。

可能的原因 - 某些插件可能会删除“已发送邮件”文件夹中的类别。尝试禁用其他插件。