我拦截了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后,它按预期工作。
答案 0 :(得分:1)
在配置了Gmail帐户的Outlook 2013(64位)上,它对我有用。即,我可以看到在所有步骤中应用的类别 - 即,在Visual Studio 2013中应用类别时,在发件箱中以及在已发送邮件文件夹中。
可能的原因 - 某些插件可能正在删除“已发送邮件”文件夹中的类别。尝试禁用其他插件。