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

Get the actual recipient of an exchange email

我有以下代码:

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 和其他发给项目@example.com。

都是我的交换邮箱收到的

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

有什么方法可以阻止它解析电子邮件地址并识别电子邮件发送到的实际 smtp 地址吗?

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

  1. 勾选AddressEntry.Type属性。如果是"SMTP",就用AddressEntry.Address属性.

  2. 如果是"EX",就用AddressEntry.GetExchangeUser.PrimarySmtpAddress


答案就是得到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