outlook - 使用 RegEx 进行 Outlook 插件搜索
问题描述
我正在尝试创建一个 Outlook 2013 插件,该插件可以使用正则表达式搜索邮件,但我遇到了一些问题。
我正在使用以下内容来获取收件箱项目。
Outlook.MAPIFolder inbox = this.Application.ActiveExplorer().Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);
Outlook.Items items = inbox.Items;
然后我循环这些项目并检查正文是否有正则表达式匹配
Match match = rgx.Match(mail.Body);
if (match.Success)
{ //do something }
我的解决方案有 2 个问题
- 我只收到 1 岁以内的物品。无论年龄大小,我如何获得所有邮件?
- 有没有更快的使用 RegEx 进行搜索的方法?
我希望有人能帮帮忙
解决方案
看起来您已经在 Outlook 中配置了一个缓存了 1 年的数据的 Exchange 缓存帐户。您需要在配置文件设置中进行检查。作为一种可能的解决方法,您可以使用EWS或扩展 MAPI 绕过缓存的数据。
然后我循环这些项目并检查正文是否有正则表达式匹配
遍历文件夹中的所有项目并不是一个好主意。我建议使用该类的Find
/FindNext
或Restrict
方法Items
来获取与您的条件相对应的项目子集。
此外,您可能会发现该类的AdvancedSearch
方法Application
很有帮助。AdvancedSearch
在 Outlook 中使用该方法的主要好处是:
- 搜索在另一个线程中执行。您不需要手动运行另一个线程,因为该
AdvancedSearch
方法会在后台自动运行它。 - 可以在任何位置(即超出某个文件夹的范围)搜索任何项目类型:邮件、约会、日历、便笺等。Restrict 和
Find
/FindNext
方法可以应用于特定的 Items 集合(请参阅 Outlook 中 Folder 类的 Items 属性)。 - 完全支持 DASL 查询(自定义属性也可用于搜索)。您可以在 MSDN中的过滤文章中阅读有关此内容的更多信息。为了提高搜索性能,如果为商店启用了即时搜索,则可以使用即时搜索关键字(请参阅类的
IsInstantSearchEnabled
属性Store
)。 - 您可以使用 Search 类的 Stop 方法随时停止搜索过程。
在 Outlook中的高级搜索中以编程方式阅读有关此内容的更多信息:C#、VB.NET文章。
推荐阅读
- spring - 更改 VS Code 调试控制台字体颜色?
- javascript - 如何让一个克隆变量(html元素)出现在另一个文档中并且在我刷新时不会消失[相当新]
- android - Android:在 FirebaseStorage 中删除文件夹
- css - Tailwind CSS:如何为锚标记启用组悬停
- c++ - 仅获取文件路径的目录名称
- r - 使用 html = TRUE 时,如何为 for 循环的每次迭代动态更新模块化闪亮警报中的下拉列表?
- java - 向树中的节点添加颜色
- xamarin.forms - 使用 xamarin 要点每 5 秒更新一次位置的问题
- javascript - NodeJS:@esri/arcgis-rest-request - 如何调整 Fetch 选项?
- reactjs - 在提交函数中使用 useAsync 钩子的想法