c# - 如何使用 EWS 获取电子邮件正文、收据、发件人和抄送信息?

标签 c# asp.net exchange-server exchangewebservices

谁能告诉我如何使用 Exchange Web 服务 API 获取电子邮件正文、收据、发件人、抄送信息?我只知道如何获取主题。

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010);
    service.Credentials = new NetworkCredential("user", "password", "domain");
    service.Url = new Uri("https://208.243.49.20/ews/exchange.asmx");
    ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true;
    FindItemsResults<Item> findResults = service.FindItems(
        WellKnownFolderName.Inbox,
        new ItemView(10));

    foreach (Item item in findResults.Items)
    {
        div_email.InnerHtml += item.Subject+"<br />";
    }

我的开发环境是asp.net c# Exchange-server 2010 谢谢。

最佳答案

由于最初的问题特别要求“电子邮件正文、收据、发件人和抄送信息”,我想我会解决这些问题。我假设“收据”是收件人信息,而不是没有人使用的电子邮件的“通知发件人”功能。 CC 看起来与收件人的处理方式相同。

我喜欢 Henning 将函数减少为两次调用的回答,但在弄清楚如何处理 PropertySet 时遇到了一点困难。谷歌搜索并没有立即明确这一点,我最终使用了别人的 tutorial :

// Simplified mail item
public class MailItem
{
    public string From;
    public string[] Recipients;
    public string Subject;
    public string Body;
}

public MailItem[] GetUnreadMailFromInbox()
{
    FindItemsResults<Item> findResults = service.FindItems(WellKnownFolderName.Inbox, new ItemView(128));
    ServiceResponseCollection<GetItemResponse> items = 
        service.BindToItems(findResults.Select(item => item.Id), new PropertySet(BasePropertySet.FirstClassProperties, EmailMessageSchema.From, EmailMessageSchema.ToRecipients));
    return items.Select(item => {
        return new MailItem() {
            From = ((Microsoft.Exchange.WebServices.Data.EmailAddress)item.Item[EmailMessageSchema.From]).Address,
            Recipients = ((Microsoft.Exchange.WebServices.Data.EmailAddressCollection)item.Item[EmailMessageSchema.ToRecipients]).Select(recipient => recipient.Address).ToArray(),
            Subject = item.Item.Subject,
            Body = item.Item.Body.ToString(),
        };
    }).ToArray();
}

关于c# - 如何使用 EWS 获取电子邮件正文、收据、发件人和抄送信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6669794/

相关文章:

c# - 在不回发的情况下在更新面板中突出显示 gridview 行

javascript - ASP.NET MVC 中的按钮提交

c# - Powershell 通用 session 并在 Exchange 远程管理 session 中导入此 session

powershell - 获取当前的Exchange Server

C#断断续续的 "The Autodiscover service couldn' t被定位”

c# - 创建使用服务的新 AuthorizationHandler/IAuthorizationRequirement

c# - 将 PowerShell 参数传递给 Process.Start

c# - 当只有一个具有给定名称的方法时,Visual Studio 指出存在不明确的调用

javascript - JQGRID - 维护复选框选择状态 - 页面刷新/重定向/重新加载

c# - 类型未知时比较数字类型