c# - 如何通过 C# 中的 Exchange Web 服务确定电子邮件的发件人?

标签 c# exchangewebservices

我目前正在像这样从交换收件箱中提取电子邮件...

var exchangeService = new ExchangeService(ExchangeVersion.Exchange2007_SP1)
{
    Credentials = new NetworkCredential("user", "password", "domain")
};

exchangeService.AutodiscoverUrl("user@domain.com");

var emails = exchangeService.FindItems(WellKnownFolderName.Inbox, new ItemView(5));

foreach (var email in emails)
{
    //var senderEmail = email.???
}

电子邮件对象似乎没有任何用于获取发件人电子邮件地址的属性。我如何获得它?

最佳答案

这是我从一个工作项目示例中提取的一些快速资源。

基本上,您只需将结果转换为 EmailMessage 即可获得次要细节。但是,如果您想获得有关发件人的更丰富的详细信息(显示名称等),那么您必须针对邮件进行特定的附加绑定(bind)(Web 服务请求)。

findResults = exchangeService.FindItems(folder.Id, messageFilter, view);
            foreach (Item item in findResults)
            {
                if (item is EmailMessage)
                {
                    EmailMessage message;
                    if (!toFromDetails)
                        message = (EmailMessage)item;
                    else
                        message = EmailMessage.Bind(exchangeService, item.Id);

如您在此代码中所见,我可以选择执行附加绑定(bind),因为这可能需要一段时间,而且我经常处理来自数百个邮箱的数千个结果。有时,对于特定客户而言,额外的时间可能不值得。

关于c# - 如何通过 C# 中的 Exchange Web 服务确定电子邮件的发件人?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9935263/

相关文章:

c# - 打开空数据表时 XmlTextReader 中是否存在错误?

ruby-on-rails - 使用 vcr stub ViewPoint gem 返回来自 ews API 的 Unauthorize 响应

json - O365 REST API 说明

email - 使用 EWS API 发送电子邮件时控制消息编码

c# - LINQ 查询在请求字节时返回 null

c# - 如何在 C# 中使用带类型数据集的事务?

c# - 使用 RegularExpressionValidator 上传文件不适用于 Firefox only IE

c# - 发送电子邮件而不在已发送文件夹中留下副本 outlook c#

java - 如何编辑联系人备注

c# - 发生了多个异常,重新抛出的正确方法是什么?