Outlook合并邮件对话

Outlook有一个让我非常闹心的地方,虽然有对话视图,但是Outlook对于判断收到的邮件是否属于同一对话,是很难以琢磨的。据说不是以邮件主题为判断依据,而是以邮件header部分的ConversationIndex作为依据。但是有时候非Outlook客户端回复的邮件会直接忽略到这个参数。 另外,我自己用ios邮件客户端回复的邮件, 有时候也不能归到同一对话下。

忍了很久之后,决定解决这个问题。 由于无法修改别人使用的客户端,只能想办法把收到的邮件合并到正确的对话中。 又在google中进行了一番学习。基本上看完全网相关的内容之后,找到了似乎是唯一的解决办法: 用VBA配合私有的Redemption库才能解决。具体如下:

第一步是注册 Redemption库 。

Redemption 主页上可以免费下载到Developer Version。在公司电脑上注册也不用管理员权限,笑眯眯。
然后在Outlook中打开 Visual Basic Editor(按Alt+F11),在 Tools, References 里面勾选上Redemption库。

第二步,宏代码

Sub AddToConversation()
On Error GoTo ErrHnd:
Dim oNS As Object
        Dim oRDOSess As Object
        Dim oRDOItem As Object
        Dim sEntryID As String
        Dim sStoreID As String
        Dim lNumMsgs As Long
Set oRDOSess = CreateObject("Redemption.RDOSession")
        Set oNS = Nothing
        Set oNS = Outlook.GetNamespace("MAPI")
        oNS.Logon
        oRDOSess.MAPIOBJECT = oNS.MAPIOBJECT
        lNumMsgs = Outlook.ActiveExplorer.Selection.Count
If lNumMsgs < 2 Then
                MsgBox ("To add messages to a conversation, first select a message then select the target conversation and run this macro.")
                GoTo ErrHnd:
        End If
        For i = 1 To (lNumMsgs - 1)
                With Outlook.ActiveExplorer.Selection(i)
                        strEntryID = .EntryID
                        strStoreID = .Parent.StoreID
                End With
                Set objRDOItem = oRDOSess.GetMessageFromID(strEntryID, strStoreID)
                objRDOItem.ConversationTopic = Outlook.ActiveExplorer.Selection.Item(lNumMsgs).ConversationTopic
                 ' 以下这句是因为Outlook 2016开始用ConversationIndex来判断对话
                objRDOItem.ConversationIndex = Outlook.ActiveExplorer.Selection.Item(lNumMsgs).ConversationIndex
                objRDOItem.Save
        Next i
ErrHnd:
Set oNS = Nothing
        Set oRDOSess = Nothing
        Set objRDOItem = Nothing
        Set strEntryID = Nothing
        Set strStoreID = Nothing
        lNumMsgs = 0
End Sub

第三部,使用方法

先选中落单的邮件,然后按住ctrl选中原对话,然后运行这个宏。OK,就是这么简单。

Reference: https://www.slipstick.com/developer/code-samples/merge-split-conversations/

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据