获取交换电子邮件的实际收件人

时间:2015-01-27 20:46:36

标签: vbscript outlook exchange-server-2010

我有以下代码:

For each Item in ofChosenFolder.Items
    msgbox Item.Subject
    for each recip in Item.Recipients
        msgbox "sent to " & recip.address
        msgbox "sent to " & recip.addressEntry
    next
next

我有一些电子邮件发给我awalker@example.com,其他邮件发送到projects@example.com。

我的交换邮箱收到了所有邮件。

使用上面的代码我总是得到我的Exchange /O=EXAMPLE/OU=EXCHANGE.../CN=RECIPIENTS/CN=A Walker等,以及我的Exchange名称“Walker”。这是因为Exchange根据全球通讯簿解析了电子邮件。

有没有办法阻止它解析电子邮件地址并确定电子邮件发送到的实际smtp地址?

1 个答案:

答案 0 :(得分:1)

这看起来像一个完全有效的EX类型地址。获取SMTP地址

  1. 检查AddressEntry.Type属性。如果是“SMTP”,只需使用AddressEntry.Address属性。

  2. 如果是“EX”,请使用AddressEntry.GetExchangeUser.PrimarySmtpAddress


  3. 答案是获得PR_TRANSPORT_MESSAGE_HEADERS

    要在VBS中执行此操作:

    For Each Item in myNameSpace.GetDefaultFolder(olFolderInbox).items
        PropName = "http://schemas.microsoft.com/mapi/proptag/0x007D001E"  
        Set oPA = Item.PropertyAccessor
        Header = oPA.GetProperty(PropName)
        'parse the "To" line out of your header to get the email address
    Next