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

时间:2012-03-29 23:53:07

标签: 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.???
}

电子邮件对象似乎没有获取发件人电子邮件地址的任何属性。我怎么做到的?

1 个答案:

答案 0 :(得分:7)

以下是我从工作项目示例中提取的一些快速资料。

基本上,您可以通过将结果转换为EmailMessage来获取次要详细信息。但是,如果您想获得有关发件人的更丰富的详细信息(显示名称等),那么您必须针对该邮件进行特定的附加绑定(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);

正如您在此代码中看到的,我可以选择执行其他绑定,因为它可能需要一段时间,而且我经常处理来自数百个邮箱的数千个结果。有时额外的时间可能不值得特定客户。