发送前添加到 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 中应用类别时,在发件箱和已发送邮件文件夹中。
可能的原因 -
某些插件可能会删除“已发送邮件”文件夹中的类别。尝试禁用其他插件。
我正在拦截 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 中应用类别时,在发件箱和已发送邮件文件夹中。
可能的原因 - 某些插件可能会删除“已发送邮件”文件夹中的类别。尝试禁用其他插件。