仅适用于原始邮件的Outlook规则

仅适用于原始邮件的Outlook规则,outlook,Outlook,我有一个规则,搜索正文消息并查找短语。如果找到该短语,则对消息进行分类。工作正常,除了我需要的规则,只分类原始邮件,而不是任何邮件的答复,该邮件 这可以通过规则实现吗?不,规则无法识别消息是否为原始/初始消息(对话中的第一条消息) 但我建议改用VBA宏。您可以处理应用程序类的事件,该事件在新邮件到达收件箱时以及在客户端规则处理发生之前触发。您可以使用entrydcollection数组中返回的条目ID调用该方法并处理该项。请谨慎使用此方法,以尽量减少对Outlook性能的影响。此事件对Micro

我有一个规则,搜索正文消息并查找短语。如果找到该短语,则对消息进行分类。工作正常,除了我需要的规则,只分类原始邮件,而不是任何邮件的答复,该邮件


这可以通过规则实现吗?

不,规则无法识别消息是否为原始/初始消息(对话中的第一条消息)

但我建议改用VBA宏。您可以处理应用程序类的事件,该事件在新邮件到达收件箱时以及在客户端规则处理发生之前触发。您可以使用
entrydcollection
数组中返回的条目ID调用该方法并处理该项。请谨慎使用此方法,以尽量减少对Outlook性能的影响。此事件对Microsoft Outlook处理的每个接收项目激发一次。项目可以是几种不同的项目类型之一,例如,
邮件项目
会议项目
,或
共享项目
entryidscolection
字符串包含与该项对应的条目ID

因此,您可以获取
MailItem
对象的一个实例,并使用该方法获取表示该项目所属对话的
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 Sub
该方法返回一个
对象,该对象包含表示对话中所有项目的行。所以,你可以得到最初的一个