2011-06-02 130 views
9

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

  1. 添加新的Outlook联系人项目(在Outlook联系人中)。
  2. 此联系人项目的电子邮件地址应该是交换用户(贵组织的任何人员,但是交换用户)的电子邮件地址。
  3. 现在,当我选择此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电子邮件?

+0

我也有这个问题,并不能从收件人的电子邮件或约会项目的SMTP地址。我只能看到这样的地址 - “Address =”/ o = INCORPORATION/ou = Exchange Administrative Group(XXXXXXXXXXXX)/ cn = Recipients/cn = username“' – kavun 2011-07-27 13:27:19

回答

0

如果我没有记错,有几个情况下电子邮件地址不会解决,除非您保存首先发送的项目。你可以试试。此外,你是否没有收到任何“安全违规”信息,要求获得访问用户通讯录的权限,或者是否已禁用/解决了所有这些问题?我有很多probs,最终需要使用Redemption来展望。

+0

其实我没有访问Outlook的通讯录。这是我尝试访问邮件地址的邮件项目的收件人对象。此外,联系人项目在我访问收件人的电子邮件地址之前已经保存。 – 2011-06-07 14:05:50

4

我找到了一种使用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; 
     } 
    } 
+1

GetExchangeUser()需要持久交换连接 – 2012-01-04 18:28:58

+1

我有一个Exchange联系人,其中GetExchangeUser返回null。仍然收件人。地址具有此wirde/o = FIRM/ou =某些组/ cn = f.name。 – lokimidgard 2017-05-10 12:22:00

相关问题