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

此对象的缺点是,你将无法看到,如果该项目有一个附件与否。 希望这可以帮助任何人不会像这样一个愚蠢的错误浪费他的时间;)