如何修改conversationTopic,以便将具有不同主题的电子邮件放在同一个帖子中?

J. *_*ein 7 outlook vba

我想帮助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)

fre*_*ess 5

正在寻找几乎完全相同的东西,正如你指出的那样,正常暴露的对象似乎不可能,但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)