更改Outlook收件箱图标信封图标

时间:2015-08-11 21:38:09

标签: c# visual-studio-2010 outlook-addin

点击此链接 - change outlook MailItem icon

我设法更改了我的收件箱图标。

这是我一步一步做的。 1)为从Internet到达的新邮件创建自定义邮件类 该类是IPM.Note.Internet

Outlook.NameSpace outlookNameSpace;
Outlook.MAPIFolder inbox;
Outlook.Items items;

    private void ThisAddIn_Startup(object sender, System.EventArgs e)
    {
        outlookNameSpace = this.Application.GetNamespace("MAPI");
        inbox = outlookNameSpace.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderInbox);

        items = inbox.Items;

        items.ItemAdd += new Outlook.ItemsEvents_ItemAddEventHandler(items_ItemAdd);
    }

    void items_ItemAdd(object Item)
    { 
        Outlook.MailItem mailitem = (Outlook.MailItem)Item;
        String EmailHeader = mailitem.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x007D001E");
        if (Item != null && EmailHeader.Contains("Look for a string in the headers here that we set for incomming mail") == true)
        {
            if (mailitem.MessageClass == "IPM.Note")
            {
                mailitem.MessageClass = "IPM.Note.Internet";
                mailitem.Save();
            }
        }
    }

2)创建了与MessageClass匹配的替换Outlook窗体区域。在这种情况下,我使用了IPM.Note.Internet

3)在“表单区域设计器”的“属性”窗格中分配图标。 enter image description here

4)在更新邮件类之后,调试项目和从互联网上传来的下一条消息上印有我的自定义图标。

我现在的问题是我无法预览或打开我更改邮件类的邮件。与此帖没有答案相似 - Change Inbox-icons in Outlook at runtime

我认为问题是我的替换Outlook窗体区域是空白的,因此无法预览该消息。

如果这是真的,那么这是我的问题。将标准IPM.Note消息类模板导出到Visual Studio的最佳方法是什么。我需要覆盖我的IPM.Note.Internet Outlook窗体区域设计。

创建Outlook表单区域时有一个选项 - enter image description here

导入“.OFS”文件。我试图弄清楚如何从Outlook 2010客户端(开发人员工具)导出文件,但我找不到将模板保存为该特定格式的方法。我可以保存到OFT(办公室模板)但不能保存.OFS

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

而不是添加表单区域并更改消息类我只是添加了PR_ICON_INDEX属性并设置了它的值。正如Dmitry Link

中选项#2中所述

这里有很多图标可供选择。我无法找到包含整数值的列表,因此我只是在Outlook Spy中为PR_ICON_INDEX属性输入了随机数,更改了值,直到找到了我想要的图标。有许多图标可供选择。许多来自600-700和1000及以上的范围。

这是我用来在消息上设置PR_ICON_INDEX属性的行 -

mailitem.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/proptag/0x10800003", 4); // change the 4 to something like 600,601...etc to experiment