我有一个规则,可以搜索正文邮件并查找短语。如果找到该短语,则对邮件进行分类。工作很好,除了我需要的规则,只分类原始邮件,而不是任何邮件的回复该邮件。
这可以通过规则实现吗?
发布于 2021-04-10 01:15:00
不,规则不能识别一条消息是否是原始/初始消息(对话中的第一条)。
但我建议使用VBA宏。您可以处理Application类的NewMailEx事件,该事件在新邮件到达收件箱时、客户端规则处理发生之前触发。您可以使用EntryIDCollection数组中返回的条目ID来调用NameSpace.GetItemFromID方法并处理该项。请谨慎使用此方法,以将对Outlook性能的影响降至最低。此事件为Microsoft Outlook处理的每个接收到的项目激发一次。项目可以是几种不同的项目类型之一,例如MailItem、MeetingItem或SharingItem。EntryIDsCollection字符串包含与该项对应的条目ID。
因此,您可以获取MailItem对象的一个实例并使用MailItem.GetConversation方法,该方法获取一个Conversation对象,该对象表示该项目所属的会话。
Sub DemoConversationTable()
Dim oConv As Outlook.Conversation
Dim oTable As Outlook.Table
Dim oRow As Outlook.Row
Dim oMail As Outlook.MailItem
Dim oItem As Outlook.MailItem
Const PR_STORE_ENTRYID As String = _
"https://schemas.microsoft.com/mapi/proptag/0x0FFB0102"
On Error Resume Next
' Obtain the current item for the active inspector.
Set oMail = Application.ActiveInspector.CurrentItem
If Not (oMail Is Nothing) Then
' Obtain the Conversation object.
Set oConv = oMail.GetConversation
If Not (oConv Is Nothing) Then
Set oTable = oConv.GetTable
oTable.Columns.Add (PR_STORE_ENTRYID)
Do Until oTable.EndOfTable
Set oRow = oTable.GetNextRow
' Use EntryID and StoreID to open the item.
Set oItem = Application.session.GetItemFromID( _
oRow("EntryID"), _
oRow.BinaryToString(PR_STORE_ENTRYID))
Debug.Print oItem.Subject, _
"Attachments.Count=" & oItem.Attachments.count
Loop
End If
End If
End SubConversation.GetTable方法返回一个Table对象,该对象包含表示会话中所有项的行。所以,你可能会得到最初的那个。
https://stackoverflow.com/questions/67025017
复制相似问题