【发布时间】:2018-03-15 19:51:58
【问题描述】:
负责开发一项小型服务,该服务将通过邮箱文件夹检查某些文档是否实际发送给客户。目标是让用户在 Outlook 中进行手动搜索并将其自动化。
例如,我们将有一张发票,用户将手动进入该邮箱并在“insta search”搜索栏中输入发票编号。当他们这样做时,即使发票编号所在的唯一位置是 PDF 本身,结果也会返回一封电子邮件。下面的例子...
Emai 对象属性:
主题:客户名称 1-1-2017
正文:附上 2017 年 1 月 1 日的费用发票
附件:客户名称 1-1-2017(在实际 PDF 中是此电子邮件中实际发票号所在的唯一位置,这是我正在搜索的内容)。
通过我们必须在 Exchange Server 上安装的称为 iFilter 的东西进行研究,这似乎是可能的?
我的问题是使用 EWS 是否可以利用搜索 PDF 正文的功能?我当前的代码如下,如果发票编号在主题或正文中,则可以使用,但我们很少再这样做了,这将是对流程更改的实质性要求。应该提一下,我真的只是想看看是否返回了特定发票号的结果,所以我不需要 EWS 实际返回的 PDF。
//initialize the service
ExchangeService service = new ExchangeService();
service.UseDefaultCredentials = true;
service.AutodiscoverUrl("email");
//get everything ready for the search
List<SearchFilter> searchFilterCollection = new List<SearchFilter>();
searchFilterCollection.Add(new SearchFilter.ContainsSubstring(ItemSchema.Subject, "invoiceNumber"));
searchFilterCollection.Add(new SearchFilter.ContainsSubstring(ItemSchema.Body, "invoiceNumber"));
searchFilterCollection.Add(new SearchFilter.ContainsSubstring(ItemSchema.Attachments, "invoiceNumber"));
SearchFilter searchFilter = new SearchFilter.SearchFilterCollection(LogicalOperator.Or, searchFilterCollection);
//item view settings
ItemView view = new ItemView(50);
Mailbox mailbox = new Mailbox("inboxLocation");
FolderId folderId = new FolderId(WellKnownFolderName.Inbox, mailbox);
//find the results
FindItemsResults<Item> results = service.FindItems(folderId, searchFilter, view);
foreach (Item item in results.Items)
{
Console.WriteLine(item.Subject);
}
【问题讨论】:
标签: c# asp.net pdf exchangewebservices