我正在尝试获取默认联系人文件夹中所有联系人的电子邮件地址。到目前为止,我已成功使用以下代码;
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
我的问题是如何从上面的内容(通用名称)获取有效的电子邮件地址?
答案 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地址。