在运行时更改Outlook中的收件箱图标

本文关键字:收件箱 图标 Outlook 运行时 | 更新日期: 2023-09-27 18:03:18

我的Outlook插件有问题。我的插件处理传入的邮件,并验证不同的标题等。我想检查是否设置了特定的标题,然后在我的收件箱文件夹中更改此邮件的图标。这可能吗?

在运行时更改Outlook中的收件箱图标

  1. 通过使用MailItem.PropertyAccessor.SetProperty修改PR_ICON_INDEX MAPI属性(DASL名称http://schemas.microsoft.com/mapi/proptag/0x10800003),将图标更改为Outlook本身使用的几十个左右预定义图标(例如,当它显示消息被回复/转发时)。您可以在OutlookSpy(我是它的作者)中使用该属性及其不同的值-选择带有回复/转发图标的消息,单击IMessage按钮,双击PR_ICON_INDEX MAPI属性来修改它。

  2. 安装您自己的自定义表单。您可以指定表单处理的消息类和自定义图标。如果您更改了邮件的消息类,Outlook将显示您的自定义图标。

不可以,自定义图标只能用于自定义表单。因此,您需要发布一个自定义表单来更改图标。

但是你可以自由处理收到的邮件。例如,您可以处理Application类的NewMailEx事件,该事件在收件箱中收到新项目时触发。

对于Microsoft Outlook处理的每个接收到的项目,此事件触发一次。项目可以是几种不同的项目类型之一,例如,MailItem、MeetingItem或SharingItem。EntryIDsCollection字符串包含对应于该项的条目ID。请注意,当EntryIDCollection包含自上次触发事件以来收件箱中收到的所有项目的逗号分隔的条目id列表时,此行为与事件的早期版本有所不同。

NewMailEx事件在新消息到达收件箱并且在客户端规则处理发生之前触发。您可以使用EntryIDCollection数组中返回的条目ID来调用命名空间。GetItemFromID方法并处理该项。请谨慎使用此方法,以尽量减少对Outlook性能的影响。但是,根据客户端计算机上的设置,在新邮件到达收件箱后,将新邮件从收件箱移动到另一个文件夹的垃圾邮件过滤和客户端规则等过程可以异步发生。

你可以使用PropertyAccessor。GetProperty方法获取PR_TRANSPORT_MESSAGE_HEADERS属性值:

 Sub DemoPropertyAccessorGetProperty() 
  Dim PropName, Header As String 
  Dim oMail As Object 
  Dim oPA As Outlook.PropertyAccessor 
  'Get first item in the inbox 
  Set oMail = _ 
  Application.Session.GetDefaultFolder(olFolderInbox).Items(1) 
  'PR_TRANSPORT_MESSAGE_HEADERS 
  PropName = "http://schemas.microsoft.com/mapi/proptag/0x007D001E" 
  'Obtain an instance of PropertyAccessor class 
  Set oPA = oMail.PropertyAccessor 
  'Call GetProperty 
  Header = oPA.GetProperty(PropName) 
  Debug.Print (Header) 
 End Sub