Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用EWS获取基于搜索过滤器的电子邮件时丢失的电子邮件不正确_C#_Exchangewebservices - Fatal编程技术网

C# 使用EWS获取基于搜索过滤器的电子邮件时丢失的电子邮件不正确

C# 使用EWS获取基于搜索过滤器的电子邮件时丢失的电子邮件不正确,c#,exchangewebservices,C#,Exchangewebservices,我创建了下面的方法。 此方法应根据某些条件返回我搜索的电子邮件。对于某些电子邮件,它会按预期工作,并返回我搜索的电子邮件,但对于其他电子邮件,它不会返回 例如,如果我搜索标题为“SomeTitle”且发件人为“的电子邮件”some@sender.com对于收到的时间“2019/01/01 12:05:05”,它可以正常工作 然后,我搜索另一封标题为“SomeOtherTitle”的电子邮件,发件人为“someother@sender.com对于收到的时间“2019/02/02 11:02:02”

我创建了下面的方法。 此方法应根据某些条件返回我搜索的电子邮件。对于某些电子邮件,它会按预期工作,并返回我搜索的电子邮件,但对于其他电子邮件,它不会返回

例如,如果我搜索标题为“SomeTitle”且发件人为“的电子邮件”some@sender.com对于收到的时间“2019/01/01 12:05:05”,它可以正常工作

然后,我搜索另一封标题为“SomeOtherTitle”的电子邮件,发件人为“someother@sender.com对于收到的时间“2019/02/02 11:02:02”,它不起作用

我可以在打开收件箱,并验证我正在搜索的电子邮件是否存在,但由于某些我无法理解的原因未找到

方法:

private FindItemsResults<Item> GetEmailItems(
            CustomObjClass e)
        {
            var itemView = new ItemView(int.MaxValue);
            var searchCollection = new SearchFilter.SearchFilterCollection(LogicalOperator.And);
            var filter1 = new SearchFilter.IsGreaterThanOrEqualTo(EmailMessageSchema.DateTimeReceived, e.EmailReceivedDateTime.AddSeconds(-1));
            searchCollection.Add(filter1);
            var filter2 = new SearchFilter.IsLessThanOrEqualTo(EmailMessageSchema.DateTimeReceived, e.EmailReceivedDateTime.AddSeconds(1));
            searchCollection.Add(filter2);
            var filter3 = new SearchFilter.IsEqualTo(EmailMessageSchema.From, new EmailAddress(e.SenderEmail));
            searchCollection.Add(filter3);
            if (e.Subject == null)
            {
                searchCollection.Add(new SearchFilter.Not(new SearchFilter.Exists(EmailMessageSchema.Subject)));
            }
            else
            {
                searchCollection.Add(new SearchFilter.IsEqualTo(EmailMessageSchema.Subject, e.Subject));
            }
            var emailItems = ExchangeService.FindItems(
                new FolderId(WellKnownFolderName.Inbox, new Mailbox(ExchangeMailServerOptions.User)),
                searchCollection,
                itemView
            );
            return emailItems;
    }
private FindItemsResults GetEmailItems(
自定义对象(e类)
{
var itemView=新的itemView(int.MaxValue);
var searchCollection=new SearchFilter.SearchFilterCollection(LogicalOperator.And);
var filter1=new SearchFilter.IsGreaterThanOrEqualTo(EmailMessageSchema.DateTimeReceived,e.EmailReceivedDateTime.AddSeconds(-1));
searchCollection.Add(filter1);
var filter2=new SearchFilter.IsLessThanOrEqualTo(EmailMessageSchema.DateTimeReceived,e.EmailReceivedDateTime.AddSeconds(1));
searchCollection.Add(filter2);
var filter3=new SearchFilter.IsEqualTo(EmailMessageSchema.From,new EmailAddress(e.SenderEmail));
searchCollection.Add(filter3);
if(e.Subject==null)
{
添加(new SearchFilter.Not(new SearchFilter.Exists(EmailMessageSchema.Subject));
}
其他的
{
添加(新的SearchFilter.IsEqualTo(EmailMessageSchema.Subject,e.Subject));
}
var emailItems=ExchangeService.FindItems(
新文件夹ID(WellKnownFolderName.Inbox,新邮箱(ExchangeMailServerOptions.User)),
搜索收藏,
项目视图
);
退回邮件;
}

我尝试过很多不同的东西,但我的想象力已经耗尽了。非常感谢您提供的任何帮助

请解释您想要实现的目标。我不明白你的问题。@Andreaschmidt在问题中添加了一个例子。谢谢。我不确定使用逻辑and运算符使用filter1和filter2可以实现什么。请显示CustomObjClass中的值…@AndreasSchmidt它只是确保接收到的时间匹配,因为毫秒精度不受支持。但是,即使我删除了这两个过滤器,代码的行为也与我在这个问题中描述的完全相同。请删除行
searchCollection.Add(new SearchFilter.Not(new SearchFilter.Exists(EmailMessageSchema.Subject))
并重试。还请提供有关CustomObjClass的更多信息。