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

Vba 检索同一线程中的所有Outlook邮件,vba,outlook,ms-office,office-interop,outlook-addin,Vba,Outlook,Ms Office,Office Interop,Outlook Addin,我们正在Outlook上构建一种通信管理系统。我们希望实现的一项重要任务是检索同一线程中的所有消息(.msg文件??)及其附件,并将它们放在CMS存储库中的同一文件夹中 我们面临的问题是如何通过编程知道特定消息(或.msg文件???)和附件属于特定线程 比如说,对于第一条消息,我们在存储库中创建了一个文件夹。然后,我们希望所有邮件(连同附件)作为对原始邮件的回复发送到同一文件夹中 我试图找出它们是否在.msg文件中设置了任何头来标识线程,但没有找到任何东西 但仍然很好奇Outlook客户端如何显

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

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

比如说,对于第一条消息,我们在存储库中创建了一个文件夹。然后,我们希望所有邮件(连同附件)作为对原始邮件的回复发送到同一文件夹中

我试图找出它们是否在.msg文件中设置了任何头来标识线程,但没有找到任何东西


但仍然很好奇Outlook客户端如何显示按通信线程层次结构排列的消息。所以我们一定有办法检索存储在某处的信息。我只是想知道我怎样才能访问它

分组保存在邮件标题中指明:“邮件ID:”,“引用:&“在回复:”,您可以使用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

分组保存在邮件标题中指明:“邮件ID:”,“引用:&“在回复:”,您可以使用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

使用PR_CONVERSATION_INDEX属性(如果单击IMessage按钮,您可以在中看到它)

会话跟踪记录在MSDN上:

使用PR\u Conversation\u INDEX属性(如果单击IMessage按钮,您可以在中看到它)


会话跟踪记录在MSDN上:

我相信Outlook会使用组电子邮件主题的短信进行会话。在我的Outlook 2010中,它将不相关的电子邮件与空白主题电子邮件组合在一起。那么你的意思是,如果我们在写回复时更改主题行,它将不会将特定回复分组在同一个线程下?当我回复主题文本更改时,它不会分组。但是,当我将更改后的回复的主题改回时,它并没有将其分组回第一个主题。逻辑可能是,如果当前主题与回复中的主题不同,则会将其视为新的保留。您可能更幸运地将消息选项(internet标头)中的“字符串”与“消息ID:”中的“引用:”进行比较,分组的电子邮件将第一封电子邮件的消息ID作为引用。引用可以是多行。我相信Outlook会将邮件主题中的文本用于群电子邮件中的对话。在我的Outlook 2010中,它将不相关的电子邮件与空白主题电子邮件组合在一起。那么你的意思是,如果我们在写回复时更改主题行,它将不会将特定回复分组在同一个线程下?当我回复主题文本更改时,它不会分组。但是,当我将更改后的回复的主题改回时,它并没有将其分组回第一个主题。逻辑可能是,如果当前主题与回复中的主题不同,则会将其视为新的保留。您可能更幸运地将消息选项(internet标头)中的“字符串”与“消息ID:”中的“引用:”进行比较,分组的电子邮件将第一封电子邮件的消息ID作为引用。引用可以是多行。嘿,我将尝试此操作并返回,但可能需要一些时间,因为我的环境突然变差了嘿,我将尝试此操作并返回,但可能需要一些时间,因为我的环境突然变差了嘿,嗨,抱歉,响应太晚了,我在摆弄你指给我的东西,而且似乎有效。但是,你能解释一下这个
PR\u CONVERSATION\u INDEX
存储在哪里吗?在
.msg
文件中?在exchange server/Outlook客户端上?我只是想知道我是否可以使用一些Java库访问相同的属性。PR_CONVERSATION_索引是MAPI属性之一。您可以在OutlookSpy()中看到它-单击IMessage按钮。这样它就不会存储在
.msg
文件中了?还是在某个Outlook加密文件中?还是在exchange服务器中?我在这里可能听起来很愚蠢。但我真的想知道物理存储,而不仅仅是如何访问它。我也是MAPI新手,所以不知道这些MAPI属性实际上存储在哪里,从哪里获取…………还说,
属性可以是持久的或临时的。从一个会话持续到另一个会话的属性可以与其对象的数据一起存储,也可以存储在配置文件中。临时属性仅在当前会话期间存在。
但这没有任何意义
对象的数据
表示邮件对象的
.msg
文件?Outlook不知道或不关心邮件及其属性存储在何处或如何存储。每个应用商店提供商都明显不同,您可以编写自己的应用商店提供商,如果您公开所有必需的接口,Outlook将乐于使用。嗨,很抱歉,响应太晚了,我只是在摆弄您指给我的东西,它似乎可以工作。但是,你能解释一下这个
PR\u CONVERSATION\u INDEX
存储在哪里吗?在
.msg
文件中?在exchange server/Outlook客户端上?我只是想知道我是否可以使用一些Java库访问相同的属性。PR_CONVERSATION_索引是MAPI属性之一。您可以在OutlookSpy()中看到它-单击IMessage按钮。这样它就不会存储在
.msg
文件中了?还是在某个Outlook加密文件中?还是在exchange服务器中?我在这里可能听起来很愚蠢。但我真的想知道物理存储,而不仅仅是如何访问它。我也是MAPI新手,所以不知道这些MAPI属性实际上存储在哪里,从哪里获取…………还说,
属性可以是持久的或临时的。从一个会话持续到另一个会话的属性可以与其对象的数据一起存储,也可以存储在配置文件中。临时属性仅在当前会话期间存在。
但这没有任何意义
对象的数据
表示邮件对象的
.msg
文件