如何使用Microsoft的EWS API 2.0获取联系人的电子邮件地址?

时间:2017-03-07 12:20:29

标签: c# .net exchangewebservices

我正在尝试获取默认联系人文件夹中所有联系人的电子邮件地址。到目前为止,我已成功使用以下代码;

var contactsfolder = ContactsFolder.Bind(service, WellKnownFolderName.Contacts,
                    new PropertySet(BasePropertySet.IdOnly, FolderSchema.TotalCount));
 var view = new ItemView(contactsfolder.TotalCount)
  {
      PropertySet = new PropertySet(BasePropertySet.FirstClassProperties, ContactSchema.DisplayName, ContactSchema.EmailAddress1)
  };
 var contactItems = service.FindItems(WellKnownFolderName.Contacts, view);

有时我收到的电子邮件不是有效的SMTP电子邮件地址。

/o=WWE/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=e20105f2e8434d9ea58efc56e8b5a173-John Cena

我的问题是如何从上面的内容(通用名称)获取有效的电子邮件地址?

1 个答案:

答案 0 :(得分:1)

由于性能原因,FindItem通常会返回本机地址(例如EX地址)。如果您对同一项目发出GetItem请求(例如Load或LoadProperitesfromitems),则Exchange应将EX地址转换为您的SMTP地址。

否则你也可以在EX地址上使用ResolveName https://msdn.microsoft.com/en-us/library/office/dn645423(v=exchg.150).aspx自己动手(只要它在GAL中列出)

唯一的例外是,如果您有一个已从全局地址列表中删除的用户的联系人,因为他们已经离开公司并且他们的邮箱已被删除。由于只有EX地址存储在从GAL添加的联系人中,因此无法将其转换回SMTP地址。