首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Folder.Bind抛出ArgumentNullException

Folder.Bind抛出ArgumentNullException
EN

Stack Overflow用户
提问于 2017-02-07 05:36:01
回答 1查看 180关注 0票数 0

我正在尝试创建一个电子邮件客户端,它可以使用EWS提供来自特定日期的电子邮件列表,但是当我调用Folder.Bind()时,我仍然会得到一个异常。

异常引发:'System.ArgumentNullException‘在mscorlib.dll附加信息:值不能为空。

它说它是一个ArgumentNullException,但是一个参数是枚举,而另一个参数在运行时不是空的。从堆栈上看,这似乎是EWS中的一个例外,它没有很好地处理,但我不知道问题是什么。

这是我的密码。

代码语言:javascript
复制
using Microsoft.Exchange.WebServices.Data;
using System;
using System.Collections.Generic;
using System.Linq;

namespace Integration
{
    public class ExchangeEmailClient : EmailClientBase
    {
        public ExchangeEmailClient(string emailAddress, string password)
        {
            ExchangeService = new ExchangeService();
            ExchangeService.Credentials = new WebCredentials(emailAddress, password);
            ExchangeService.Url = new Uri("https://outlook.office365.com/EWS/Exchange.asmx");
        }

        public ExchangeService ExchangeService { get; private set; }

        public override IEnumerable<Email> Receive(DateTime getFrom)
        {
            //Get emails
            var inbox = Folder.Bind(ExchangeService, WellKnownFolderName.Inbox); //Exception thrown here!
            var filter = new SearchFilter.SearchFilterCollection(LogicalOperator.And, new SearchFilter.IsGreaterThan(ItemSchema.DateTimeReceived, getFrom));
            var emails = inbox.FindItems(filter, new ItemView(int.MaxValue));

            //Transform (use data transformation tool?)
            foreach (EmailMessage exchangeEmail in emails)
            {
                var standardEmail = new Email();
                standardEmail.Body = exchangeEmail.Body;
                standardEmail.Subject = exchangeEmail.Subject;
                standardEmail.From = exchangeEmail.From.Address;

                standardEmail.Attachments = exchangeEmail.Attachments.Select(x => new Uri(x.ContentLocation)).ToList();
                standardEmail.CarbonCopy = exchangeEmail.CcRecipients.Select(x => x.Address).ToList();

                yield return standardEmail;
            }
        }

        public override void Send(Email email)
        {
            var outgoingMail = new EmailMessage(ExchangeService);
            outgoingMail.Body = email.Body;
            outgoingMail.Subject = email.Subject;
            outgoingMail.From = new EmailAddress(email.From);

            //Get attachments
            email.Attachments.ForEach(x => outgoingMail.Attachments.AddFileAttachment(x.ToString()));

            //Set addresses
            email.To.ForEach(x => outgoingMail.ToRecipients.Add(new EmailAddress(x)));
            email.CarbonCopy.ForEach(x => outgoingMail.CcRecipients.Add(new EmailAddress(x)));
            email.BlindCarbonCopy.ForEach(x => outgoingMail.BccRecipients.Add(new EmailAddress(x)));

            //Send
            outgoingMail.SendAndSaveCopy();
        }
    }
}

获得这样的项目会引发相同的异常:

代码语言:javascript
复制
//Get emails 
var filter = new SearchFilter.SearchFilterCollection(LogicalOperator.And, new SearchFilter.IsGreaterThan(ItemSchema.DateTimeReceived, getFrom)); 
var emails = ExchangeService.FindItems(WellKnownFolderName.Inbox, filter, new ItemView(int.MaxValue)); 

在EWS的2.2.0和1.2.0版本中都会出现这种情况。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-07 23:49:26

这个异常是在EWS库中处理的,我刚刚关闭了我的代码。代码执行并继续正常运行。

资料来源: mr_frostfire @ https://social.msdn.microsoft.com/Forums/en-US/f0806f0b-758c-429d-ad0c-e08274c1660b/getting-impossible-argumentnullexception-from-ensurestrongcryptosettingsinitialized-in?forum=netfxbcl

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42082484

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档