gpt4 book ai didi

c# EWS 2007 地址为空

转载 作者:太空宇宙 更新时间:2023-11-03 13:35:06 25 4
gpt4 key购买 nike

我正在开发一个 WinForms 应用程序,它使用 EWS 来读取我们 Exchange 服务器的邮件。 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();
}

这是我在调试时得到的:

Screenshot

任何人都可以给我一个建议,我在这里犯了什么错误吗?我写的东西有问题还是交换服务器的设置问题?

最佳答案

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

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

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

此对象的缺点是您无法查看该项目是否有附件。希望这可以帮助任何人不要在这样的愚蠢错误上浪费时间 ;)

关于c# EWS 2007 地址为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18961325/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com