我想帮助Outlook 2010线程化我的电子邮件.我的理解是它将对话视图的基础置于其conversationTopic属性之上MailItem.我编写了以下方法并创建了一个规则,因此它会触发电子邮件主题,如"订单#345 - 供应商回复"和"订单#345 - 客户回复",并将它们放在同一个主题中.不幸的conversationTopic是,这是一个只读属性.
有没有人知道解决这个问题的方法,或者更好的方法来完成同样的任务?谢谢!
Sub ModifyConversationTopic(Item As Outlook.MailItem)
Dim regex As RegExp
Dim newMailItem As Outlook.MailItem
newMailItem = Item.Copy
Set regex = New RegExp
regex.IgnoreCase = False
regex.Global = True
regex.Pattern = "(Order# [0-9]+) .*"
If regex.Test(newMailItem.Subject) Then
Dim matches As MatchCollection
Set matches = regex.Execute(newMailItem.Subject)
Set topic = matches.Item(0)
MsgBox ("OH YEAH" + topic)
newMailItem.ConversationTopic = topic
newMailItem.Save
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
正在寻找几乎完全相同的东西,正如你指出的那样,正常暴露的对象似乎不可能,但VBA宏+ Outlook Redemption可以轻松调整对话主题.奖金,原始邮件主题没有变化,但邮件仍显示在一个漂亮的整洁对话组中.
这样的东西,抛入VBA宏,然后在收到消息时使用您确定的任何条件将此脚本作为规则操作运行:
Sub MsgProcess(msg As MailItem)
Dim oNS As Object
Dim oRDOSess As Object
Dim oRDOItem As Object
Dim sEntryID As String
Dim sStoreID As String
Dim NewConversationTopic As String
Set oRDOSess = CreateObject("Redemption.RDOSession")
Set oNS = Nothing
Set oNS = Outlook.GetNamespace("MAPI")
oNS.Logon
oRDOSess.MAPIOBJECT = oNS.MAPIOBJECT
sEntryID = msg.EntryID
sStoreID = msg.Parent.StoreID
Set oRDOItem = oRDOSess.GetMessageFromID(sEntryID, sStoreID)
'Apply what modifications to topic you want here - dumb example string manipulation shown
NewConversationTopic = Replace(oRDOItem.ConversationTopic, "BLACK", "WHITE")
oRDOItem.ConversationTopic = NewConversationTopic
oRDOItem.Save
End Sub
Run Code Online (Sandbox Code Playgroud)