[英]EWS Managed Api - Retrieving e-mails from Office365 exchange server
我最初是连接到域内交换服务器,并从收件箱中的电子邮件中检索附件文件。 这非常有效,它正在进行身份验证,并检索文件(甚至其他文件夹)。 现在,我已切换到Office365交换服务器。
我已经阅读了文档,并了解以下内容必须为假,并且您必须手动通过凭据,如下所示。
// Service.UseDefaultCredentials = true;
Service.Credentials = new WebCredentials(ExchangeEmail, ExchangePassword);
因此,我做了这些更改,在“ Exchange2013_SP1”上安装了ExchangeService的ExchangeVersion。
通过在.AutodiscoverUrl调用之后检查服务,可以看出它正在检索url等。因此,看起来好像它确实已连接到服务器。 我现在没有主意了,我关注了EWS Managed Api的msdn页面,无法完全弄清为什么现在不再选择电子邮件。
另一个要点是,我正在执行过滤器搜索(在域交换中有效)。 域电子邮件的结构与office365电子邮件相同。
这是我无法从中找到项目的代码段:
var view = new ItemView(10, 0, OffsetBasePoint.Beginning)
{
PropertySet =
new PropertySet(
BasePropertySet.IdOnly,
EmailMessageSchema.Sender,
ItemSchema.DateTimeReceived)
};
var filter = new SearchFilter.ContainsSubstring(EmailMessageSchema.From, FromEmailAddress);
FindItemsResults<Item> results;
do
{
results = Service.FindItems(vacancyFolderId, filter, view);
我所做的另一项测试是保持简单,然后尝试通过ews托管api发送电子邮件。 那按预期工作。 我怀疑需要对我的附件检索代码进行微妙的更改。 也许是https或其他内容,但文档中没有提及。 仅提及您需要启用https才能访问交换服务器。
我尝试通过“发件人电子邮件地址”进行过滤的方式存在2个问题。
第一个问题是杰森提到的问题 。 在我的ItemView中,我包括了PropertySet值'EmailMessageSchema.Sender',这不是字符串。 尝试在Office365交换服务器上进行筛选时,将其更改为“ EmailMessageSchema.From”没有区别。
注意:出于任何奇怪的原因,在域交换服务器上使用此错误的属性集(.Sender)仍然可以使用。
第二个问题在使用以下语法查询Office365服务器时,其筛选依据:
var filter = new SearchFilter.ContainsSubstring(EmailMessageSchema.From, FromEmailAddress);
不起作用。 当检查来自非电子邮件地址的传入邮件时,它是“用户名/域/其他/管理组/ Etc / Etc”。
解决方案使用querystring过滤器。
var querystring = "HasAttachments:true From:foo@bar.com Kind:email";
我希望这可以帮助某人并挽救他们给我带来的挫败感。 从我看到的文档(SearchFilter.ContainsSubstring和EWS托管Api入门..)中,没有任何提及。
如果我关注您,我想您是说FindItems
返回任何结果。 在Sender
属性上执行ContainsSubstring
过滤器是有问题的(因为Sender不是字符串属性)。 请参阅EWS SearchFilter.ContainsSubstring以过滤发件人电子邮件地址 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.