获取作为 Exchange 用户的收件人的电子邮件地址

Posted

技术标签:

【中文标题】获取作为 Exchange 用户的收件人的电子邮件地址【英文标题】:Getting email address of a recipient which is an exchange user 【发布时间】:2011-09-07 08:38:19 【问题描述】:

在我的 VSTO Outlook 2007 插件中,我可以获取 Exchange 用户的收件人的电子邮件地址。但是当我遇到以下情况时,它不会给我返回 smtp 电子邮件:

    添加新的 Outlook 联系人项目(在 Outlook 联系人中)。 此联系人项目的电子邮件地址应该是 Exchange 用户(您组织中的任何人,但那是 Exchange 用户)的电子邮件。 现在,当我选择此 Outlook 联系人作为电子邮件收件人并在项目发送事件中,我无法获取 smtp 地址。

下面是我的代码:

    Recipient r = mailItem.Recipients[i];
r.Resolve();
//Note, i have different conditions that check the AddressEntryUserType of recipient's 
//address entry object. All other cases work fine. In this case this is 
//olOutlookContactAddressEntry. 
//I have tried the following:

 ContactItem cont = r.AddressEntry.GetContact();
 string email = cont.Email1Address;
 string emailtmp = r.AddressEntry.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x800F101E") as string;

谁能帮助我了解在这种情况下我应该使用什么属性来获取 smtp 电子邮件?

【问题讨论】:

我也遇到了这个问题,无法从电子邮件或约会项目的收件人那里获取 smtp 地址。我只能得到一个看起来像这样的地址 - Address = "/o=INCORPORATION/ou=Exchange Administrative Group (XXXXXXXXXXXX)/cn=Recipients/cn=username" 【参考方案1】:

我找到了一种使用 ExchangeUser 项并通过该对象解析 smtp 地址的方法。这篇文章有帮助 - Get Smtp email from ContactInfo stored in Exchange

    foreach (Outlook.Recipient recipient in currentAppointment.Recipients)
    
        Outlook.ExchangeUser exchangeUser = recipient.AddressEntry.GetExchangeUser();
        string smtpAddress;
        if (exchangeUser != null)
        
             smtpAddress = exchangeUser.PrimarySmtpAddress;
        
        else
        
             smtpAddress = recipient.Address;
        
    

【讨论】:

GetExchangeUser() 需要持久交换连接 我有一个 Exchange 联系人,其中 GetExchangeUser 返回 null。仍然是收件人。地址有这个线 /o=FIRM/ou=Some Group/cn=f.​​name. 在遍历收件人并同时处理这两种情况时非常有帮助 - email.adress 和交换用户 email.adrass【参考方案2】:

如果我没记错的话,在某些情况下,除非您先保存要发送的项目,否则电子邮件地址将无法解析。你可以试试。此外,您是否没有收到任何“安全违规”消息,要求允许访问用户的通讯簿,或者您是否禁用/解决了所有这些问题?我遇到了很多问题,最终需要使用 Redemption for Outlook。

【讨论】:

其实我并没有访问 Outlook 的通讯录。这是我试图访问其电子邮件地址的邮件项目的收件人对象。此外,在我访问收件人的电子邮件地址之前,联系人项目已经保存。

以上是关于获取作为 Exchange 用户的收件人的电子邮件地址的主要内容,如果未能解决你的问题,请参考以下文章

Exchange Server 2016管理系列课件11.管理邮箱代理发送权限

exchange2013和exchange online自动向发件人发送答复邮件

Exchange批量删除邮件

Exchange 2016发送给内部中继服务器邮件后收件人显示winmail.dat

exchange邮件无法发送问题(被反垃圾屏蔽)

管理Exchange Online用户介绍