c#EWS 2007地址空

问题描述 投票:2回答:1

我正在使用WinForms应用程序,它使用EWS来读取我们的Exchange Server的邮件。 Exchange处于2007版本。我可以通过EWS成功读取,移动,删除和发送电子邮件。我正在使用自动发现来验证并选择邮箱。唯一的问题是我从未收到任何发件人的电子邮件地址。我得到的唯一的东西是发件人的名字,但没有地址。

到目前为止这是我的代码:

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();   
}

这是我调试时得到的:

任何人都可以给我一个建议我错在这里吗?我写的是什么问题,甚至可能是Exchange Server的设置问题?

c# winforms exchange-server exchangewebservices exchange-server-2007
1个回答
1
投票

问题似乎是EmailMessage对象的定义:

通过使用显式转换定义EmailMessage,并非所有属性都转移到新对象。如果你使用由.Bind()方法定义的上层EmailMessage对象来尝试它,它也不会工作。发生这种情况的原因是由于PropertySet作为第三个参数传递。我找到的唯一解决方案是创建第三个对象:

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

此对象的缺点是,您将无法查看该项是否具有附件。希望这有助于任何人不要浪费他的时间在这样一个愚蠢的错误;)

© www.soinside.com 2019 - 2024. All rights reserved.