c#EWS 2007地址来自空

c#EWS 2007地址来自空,c#,winforms,exchange-server,exchangewebservices,exchange-server-2007,C#,Winforms,Exchange Server,Exchangewebservices,Exchange Server 2007,我正在开发一个WinForms应用程序,它使用EWS读取Exchange服务器的邮件。交换版本为2007。我可以通过EWS成功地阅读、移动、删除和发送电子邮件。我正在使用自动发现进行身份验证并选择邮箱。唯一的问题是我从来没有收到过任何发件人的电子邮件地址。我得到的唯一信息是发件人的姓名,但没有地址 这是我目前的代码: Service1 = new ExchangeService(ExchangeVersion.Exchange2007_SP1); Service1.Credentials = n

我正在开发一个WinForms应用程序,它使用EWS读取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服务器的设置问题

问题似乎在于EmailMessage对象的定义:

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

EmailMessage messageInfo = EmailMessage.Bind(useService, item.Id);
此对象的缺点是,您无法查看该项是否具有附件。 希望这能帮助任何人不要把时间浪费在那样愚蠢的错误上;)