2017-03-07 24 views
2

我想在我的默認聯繫人文件夾中獲取所有聯繫人的電子郵件地址。到目前爲止,我已成功使用以下代碼;如何使用微軟的EWS API 2.0獲取聯繫人的電子郵件地址?

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

出於性能原因,FindItems通常會返回本地地址(例如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地址。

+0

Thank you @Glen我通過使用ResolveName方法解決了這個問題,但當全局地址簿中有多個具有相同名稱的人時,它並不是非常有效。 –

相關問題