2

我正在使用EWS閱讀我們的Exchange服務器的郵件的WinForms應用程序。 Exchange是在2007版。我可以通過EWS成功讀取,移動,刪除和發送電子郵件。我使用自動發現進行身份驗證並選擇郵箱。唯一的問題是我從來沒有得到任何發件人的電子郵件地址。我唯一得到的是發件人的姓名,但沒有地址。c#EWS 2007地址從空

這是我到目前爲止的代碼:

Service1 = new ExchangeService(ExchangeVersion.Exchange2007_SP1); 
Service1.Credentials = new WebCredentials(Properties.Settings.Default.Username, Properties.Settings.Default.Password); 
Service1.Url = new Uri(Properties.Settings.Default.Serviceurl); 
EmailMessage messageAtt = EmailMessage.Bind(Service1, item.Id, new PropertySet(BasePropertySet.IdOnly, ItemSchema.Attachments, ItemSchema.HasAttachments, EmailMessageSchema.IsRead)); 
EmailMessage messageData = (EmailMessage)item; 

foreach (Attachment attachment in messageAtt.Attachments) 
{ 
    String from = messageData.Sender.Address.ToString(); 
} 

這是我所得到的,當我調試:

Screenshot

誰能給我一個建議,就是我弄錯嗎?是否有我寫的問題,或者它可能是交換服務器的設置問題?

回答

1

這個問題似乎是EmailMessage對象的定義:

通過與顯式轉換不是所有的屬性都歌廳轉移到新的對象定義EmailMessage。如果使用由.Bind()方法定義的上部EmailMessage對象來嘗試它,它也不會工作。發生的原因是由於PropertySet作爲第三個參數傳遞。我發現的唯一的解決方案是創建一個第三個對象:

EmailMessage messageInfo = EmailMessage.Bind(useService, item.Id); 

此對象的缺點是,你將無法看到,如果該項目有一個附件與否。 希望這可以幫助任何人不會像這樣一個愚蠢的錯誤浪費他的時間;)