首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅适用于原始邮件的Outlook规则

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

Stack Overflow用户
提问于 2021-04-10 00:39:19
回答 1查看 31关注 0票数 0

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

这可以通过规则实现吗?

EN

回答 1

Stack Overflow用户

发布于 2021-04-10 01:15:00

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

但我建议使用VBA宏。您可以处理Application类的NewMailEx事件,该事件在新邮件到达收件箱时、客户端规则处理发生之前触发。您可以使用EntryIDCollection数组中返回的条目ID来调用NameSpace.GetItemFromID方法并处理该项。请谨慎使用此方法,以将对Outlook性能的影响降至最低。此事件为Microsoft Outlook处理的每个接收到的项目激发一次。项目可以是几种不同的项目类型之一,例如MailItemMeetingItemSharingItemEntryIDsCollection字符串包含与该项对应的条目ID。

因此,您可以获取MailItem对象的一个实例并使用MailItem.GetConversation方法,该方法获取一个Conversation对象,该对象表示该项目所属的会话。

代码语言:javascript
复制
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

Conversation.GetTable方法返回一个Table对象,该对象包含表示会话中所有项的行。所以,你可能会得到最初的那个。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67025017

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档