在Outlook VBA中提取getTable()收件人电子邮件地址的最快方法

在Outlook VBA中提取getTable()收件人电子邮件地址的最快方法,vba,search,outlook,Vba,Search,Outlook,我在这里找到了一些关于个人试图从getTable()结果中获取收件人信息的来源,其中一个来源指向一个microsoft论坛,MVP指出了一个潜在的解决方案,但没有对其进行全部扩展。我目前的代码如下: Set MyTable = MySearch.GetTable MyTable.Columns.Add ("http://schemas.microsoft.com/mapi/proptag/0x0E03001E") Do Until MyTable.EndOfTable Set

我在这里找到了一些关于个人试图从getTable()结果中获取收件人信息的来源,其中一个来源指向一个microsoft论坛,MVP指出了一个潜在的解决方案,但没有对其进行全部扩展。我目前的代码如下:

    Set MyTable = MySearch.GetTable
MyTable.Columns.Add ("http://schemas.microsoft.com/mapi/proptag/0x0E03001E")

Do Until MyTable.EndOfTable
    Set nextRow = MyTable.GetNextRow()
    For Each OutRecip In Session.GetItemFromID(nextRow("EntryID")).Recipients
        OutRecip.PropertyAccessor.GetProperty ("http://schemas.microsoft.com/mapi/proptag/0x39FE001E")
    Next
Loop

目前,我必须提取条目id,然后找到邮件项目,然后从中获取收件人列表。我发现它很慢,并希望有一个更快的方法,考虑到我使用的是先进的搜索功能,这一点是有效的。是否有任何具有to、cc和bcc的架构属性,我可以使用vba中的某种文本函数以某种方式提取这些属性?

无法从MAPI表中提取收件人信息。最好的方法是
PR\u DISPLAY\u TO
/
PR\u DISPLAY\u CC
/
PR\u DISPLAY\u BCC
,但这些邮件属性(通常)不包含电子邮件地址或条目ID


您可以根据收件人属性创建搜索条件,但需要扩展MAPI(C++或Delphi)或Redemption(任何语言)。无法从MAPI表中提取收件人信息。最好的方法是
PR\u DISPLAY\u TO
/
PR\u DISPLAY\u CC
/
PR\u DISPLAY\u BCC
,但这些邮件属性(通常)不包含电子邮件地址或条目ID


您可以根据收件人属性创建搜索条件,但您需要扩展MAPI(C++或Delphi)或Redemption(任何语言)。

谢谢您的评论,但这些选项不包括电子邮件地址,不幸的是,我没有您提到的任何附加内容:(.我确实找到了一种方法,虽然使用“”。这包括“发件人”和“收件人”的列表格式,该格式允许提取所需的值,因为它们是分隔的。但我要注意的是,密件抄送似乎不包括在内。此外,您发送的电子邮件是否没有标题?我尝试从“发送”框中提取此属性,但它不会返回任何内容。只有“PR\U传输\U消息\U标题”可用在收到的邮件上显示,这就是为什么在“已发送邮件”文件夹中看不到该邮件的原因。使用OutlookSpy查看邮件(单击IMessage按钮)。我打算尝试一下redemption,但不幸的是,我们的计算机被锁得很紧,因此我们无法安装任何软件。我可以下载这些dll并从vbe编辑器中引用它们,然后创建对象吗?您可以将redemption.dll复制到任何文件夹,并使用regsvr32.exe进行注册。如果没有,它可以在HKCU中自行安装对HKCR的写访问权限。若要在赎回中创建限制,您可以在RDOItems使用的SQL语句中使用Recipients/to/CC/BCC属性。查找或限制。它将使用指定的值与PR\u DISPLAY\u NAME/PR\u EMAIL\u ADDRESS/PR\u SMTP\u ADDRESS收件人属性匹配。感谢您的评论,但这些选项不包括email地址和不幸的是,我没有你提到的任何额外内容:(.我确实找到了一种方法,虽然使用“”。这包括“发件人”和“收件人”的列表格式,该格式允许提取所需的值,因为它们是分隔的。但我要注意的是,密件抄送似乎不包括在内。此外,您发送的电子邮件是否没有标题?我尝试从“发送”框中提取此属性,但它不会返回任何内容。只有“PR\U传输\U消息\U标题”可用在收到的邮件上显示,这就是为什么在“已发送邮件”文件夹中看不到该邮件的原因。使用OutlookSpy查看邮件(单击IMessage按钮)。我打算尝试一下redemption,但不幸的是,我们的计算机被锁得很紧,因此我们无法安装任何软件。我可以下载这些dll并从vbe编辑器中引用它们,然后创建对象吗?您可以将redemption.dll复制到任何文件夹,并使用regsvr32.exe进行注册。如果没有,它可以在HKCU中自行安装对HKCR的写访问权限。若要在赎回中创建限制,您可以在RDOItems使用的SQL语句中使用Recipients/to/CC/BCC属性。查找或限制。它将使用指定的值与PR\u DISPLAY\u NAME/PR\u EMAIL\u ADDRESS/PR\u SMTP\u ADDRESS收件人属性匹配。