在Outlook中,经常会遇到一个让人抓狂的问题:那就是在“已删除邮件”旁边显示的未读邮件数量。为了解决这个问题,创建了一个简单的Outlook插件,确保任何移动到“已删除邮件”的邮件都被标记为已读。本文的目的是分享这个插件,同时也展示在开发Outlook插件以及其安装程序过程中学到的知识。
标记邮件为已删除的代码实际上非常简单。首先,需要创建一个新项目,并选择“Outlook 2010 Add-In”作为项目类型。然后,需要展开“Outlook”组,并打开ThisAddIn.cs文件。在ThisAddIn_Startup方法中,将添加一个事件处理器:
Outlook.MAPIFolder deletedFolder =
this
.Application.Session.GetDefaultFolder(
Outlook.OlDefaultFolders.olFolderDeletedItems);
deletedFolder.Items.ItemAdd +=
new
Outlook.ItemsEvents_ItemAddEventHandler(DeletedItems_ItemAdd);
在事件处理器中,只需将邮件标记为已读。在提供的源代码中还检查了其他几种邮件类型,但它们基本上都类似于这样:
if
(Item
is
Outlook.MailItem)
{
(Item
as
Outlook.MailItem).UnRead =
false
;
}
就是这样。关闭Outlook并点击运行按钮,调试器将打开带有插件运行的Outlook。可以测试它并验证它是否在将邮件发送到“已删除邮件”时将其标记为已读。
首先,需要创建一个新的安装项目。创建安装项目后,切换到Release并重建解决方案。如果点击解决方案资源管理器中的安装项目,将看到一系列工具按钮。将使用文件系统编辑器和注册表编辑器。
在文件系统编辑器中,将右键单击应用程序文件夹以添加一些东西:
在注册表编辑器中,需要创建键HKEY_CURRENT_USER\Software\Microsoft\Office\Outlook\Addins\Mark Deleted Items Read。最终的键名并不重要,但不希望它与插件项目名称匹配,因为VS在调试时会覆盖该键。
然后需要为Description、FriendlyName和Manifest创建字符串值。可以为前两个值随意设置,但Manifest的值应该是"[TARGETDIR]MarkDeletedItemsRead.vsto|vstolocal"。
重建安装项目后,应该能够在bin\release文件夹中的Setup.exe进行安装。