2012-07-02 82 views
0

我目前正試圖實施一項服務,該服務使用EWS更新用戶的outlook聯繫人,但我在寫入電子郵件地址字段時遇到了一些問題。請注意,我不是Exchange開發人員,在EWS方面我是新手。EWS將LegacyDN地址代替SMTP寫入聯繫人

使用FindItems()方法搜索用戶的聯繫人文件夾時,返回的Contact對象將其電子郵件地址字段設置爲正確的SMTP地址([email protected])。但是,當我更新並保存聯繫人時,下一次我檢索該聯繫人時,電子郵件地址字段會顯示LegacyDN地址(/ o = Blah/ou = Exchange Administrative Group/cn = Recipients/cn = Blah)。即使我在更新時將相同的SMTP地址寫入聯繫人字段,也會發生這種情況。

不知何故,EWS似乎在內部將SMTP地址轉換爲ExchangeLDn地址。由於多種原因,這是有問題的。特別是,它似乎破壞了我們從交換服務器讀取的其他一些服務,並且無法在不進行非常緩慢的ResolveName調用的情況下正確顯示電子郵件地址。有沒有辦法阻止EWS這樣做?使用Outlook Redemption的另一項服務在正確編寫SMTP地址時沒有問題,但我們試圖停用該服務並使用Redemption API。我還應該提到,只有在爲內部用戶更新聯繫人時纔會出現此問題。外部用戶總是寫出正確的SMTP地址。

謝謝。

回答

0

您是否嘗試設置EmailAddress的MailboxType屬性?

我有一些與內部用戶類似的問題,但在我的情況下,我收到了一個異常,而不是LegacyDN。

在我的情況下,將屬性設置爲MailboxType.Mailbox解決了這個問題。

1

我的經驗表明,聯繫人創建/更新過程中設置MailboxTypeOneOff避免了SMTP到的LegacyDN內部地址的類型轉換:

var address = new EmailAddress 
{ 
    Address = "[email protected]", 
    MailboxType = MailboxType.OneOff 
}; 
newContact.EmailAddresses[EmailAddressKey.EmailAddress1] = address;