检索同一线程中的所有Outlook邮件

时间:2013-08-21 06:33:00

标签: vba outlook ms-office office-interop outlook-addin

我们正在Outlook上构建一种通信管理系统。我们希望实现的一项重要任务是检索同一线程中的所有消息(.msg文件??)及其附件,并将它们放在CMS的存储库中的同一文件夹中。

我们面临的问题是我们如何以编程方式知道特定消息(或.msg文件??)和附件属于特定线程。

假设我们在存储库中创建了一个文件夹。然后,我们希望作为对原始邮件的回复发送的所有邮件(以及附件)自动进入同一文件夹。

我试图找出它们是否在.msg文件中设置任何标头以识别该线程,但没有找到任何内容。

但仍然很好奇Outlook客户端如何显示排列为通信线程层次结构的消息。因此必须有一些方法可以检索存储在某处的信息。我只是想知道如何访问它。

2 个答案:

答案 0 :(得分:1)

分组保存在消息标题中指示:“消息ID:”,“参考:”& “In-Reply-To:”,您可以使用我之前找到的具有以下功能的Outlook VBA查看它。

Private Function GetInetHeaders(olkMsg As Outlook.MailItem) As String
    ' Purpose: Returns the internet headers of a message.'
    ' Written: 4/28/2009'
    ' Author:  BlueDevilFan'
    ' Outlook: 2007'
    Const PR_TRANSPORT_MESSAGE_HEADERS = "http://schemas.microsoft.com/mapi/proptag/0x007D001E"
    Dim olkPA As Outlook.PropertyAccessor
    Set olkPA = olkMsg.PropertyAccessor
    GetInetHeaders = olkPA.GetProperty(PR_TRANSPORT_MESSAGE_HEADERS)
    Set olkPA = Nothing
End Function

答案 1 :(得分:0)

使用PR_CONVERSATION_INDEX属性(如果单击IMessage按钮,则可以在OutlookSpy中看到它)
MSDN上记录了对话跟踪:http://msdn.microsoft.com/en-us/library/office/cc765583.aspx