【问题标题】:VSTO Outlook.Recipients Value Displaying External Email Addresses Differently than Internal Email AddressesVSTO Outlook.Recipients 值显示与内部电子邮件地址不同的外部电子邮件地址
【发布时间】:2019-01-19 00:27:42
【问题描述】:

我们有一个 Outlook VSTO 加载项,它正在检查 Outlook.Recipients 域以查看收件人是否在我们的网络外部

Dim objRecipients As Outlook.Recipients

假设有 2 个收件人,我们要遍历并检查域:

Do While objRecipients.Count >= loopCount
  If InStr(1, objRecipients(loopCount).Address, "@") Then
    ...
  End If
  Loop +=1
Loop

对于我们看到的外部 objRecipient(loopCount).Address,比如说:

  gmail.com

哪个好。

但是,对于内部地址,我们似乎看到的是 LDAP/Exchange 地址,而不是像这样的 SMTP 地址:

/O=EXCHANGELABS/OU=EXCHANGE ADMINISTRATIVE GROUP (FYDIBOHF23SPDLT)/CN=RECIPIENTS/CN=9asd9asd9d9d9asd9asd9asd9asd9asd9asd-Fred Smith"

这似乎刚刚开始发生,但不知道为什么或如何解决这个问题。

知道为什么会这样吗?

谢谢

【问题讨论】:

标签: vb.net vsto outlook-addin


【解决方案1】:

阅读这篇文章帮助我们解决了问题:

https://docs.microsoft.com/en-us/office/vba/outlook/Concepts/Address-Book/obtain-the-e-mail-address-of-a-recipient

我们需要使用 Outlook.PropertyAccessor 属性来获取正确的 SMTP 地址:

  Dim objRecipients As Outlook.Recipients

  Dim pa As Outlook.PropertyAccessor
  Const PR_SMTP_ADDRESS As String = 
  "http://schemas.microsoft.com/mapi/proptag/0x39FE001E"

        Do While objRecipients.Count >= loopCount

            'set propertyaccessor object
            pa = objRecipients(loopCount).PropertyAccessor

           'set propertyaccessor domain based on smtp address
           paDomain = pa.GetProperty(PR_SMTP_ADDRESS)

           Loop +=1
 Loop

【讨论】:

    猜你喜欢
    • 2015-04-24
    • 1970-01-01
    • 1970-01-01
    • 2022-07-14
    • 2016-03-20
    • 2013-01-25
    • 2013-08-10
    • 2017-07-23
    • 2011-11-18
    相关资源
    最近更新 更多