使用Exchange Web服务从Exchange下载附件

Jim*_*mes 9 c# exchangewebservices

我试图使用以下代码使用C#和Exchange Web服务从收件箱中的电子邮件连接和下载附件,但我收到'System.ArgumentOutOfRangeException'错误,我不明白为什么.我已经google了一个答案,但我找不到一个或我找到的答案是非常旧版本的EWS.

我知道其余的代码通常有效,因为我可以访问与电子邮件相关的其他信息,只是不访问附件.

任何人都向我展示了我的方式的错误?

提前致谢,

詹姆士

    static void Main(string[] args)
    {
        ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
        service.Credentials = new NetworkCredential("MYLOGIN", "MYPASSWORD", "MYDOMAIN");

        service.Url = new Uri("https://MYMAILSERVER/EWS/Exchange.asmx");

        ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };

        FindItemsResults<Item> findResults = service.FindItems(WellKnownFolderName.Inbox, new ItemView(1000));

        foreach (Item item in findResults.Items)
        {
            if (item.HasAttachments && item.Attachments[0] is FileAttachment)
            {
                FileAttachment fileAttachment = item.Attachments[0] as FileAttachment;
                fileAttachment.Load("C:\\temp\\" + fileAttachment.Name);
            }

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

解决但新问题

我现在通过将'foreach(findResults.Items中的项目项)更改为'foreach(findResults.Items中的EmailMessage项)'来排序问题,但现在我需要找出如何通过附件进行枚举 - 任何人的想法?

小智 7

检查你的个人资料 如果您在轻型模式下运行,则不会使用消息下载附件.

添加以下行

item.Load() // loads the entire message with attachment
Run Code Online (Sandbox Code Playgroud)


Mik*_*ike 1

除非我遗漏了一些明显的东西,否则您所需要做的就是通过 进行枚举item.Attachments

单击此处并向下滚动到您看到Example标题的位置。