217.17. 使用自定义搜索终端


可从 Camel 2.11 开始

您可以在 MailEndpoint 上配置 搜索终止,允许您过滤掉不需要的邮件。

例如,要在 Subject 或 Text 中过滤包含 Camel 的邮件,您可以执行以下操作:

<route>
  <from uri="imaps://mymailseerver?username=foo&password=secret&searchTerm.subjectOrBody=Camel"/>
  <to uri="bean:myBean"/>
</route>
Copy to Clipboard Toggle word wrap

请注意,我们使用 "searchTerm.subjectOrBody" 作为参数键,以指出我们希望搜索邮件主题或正文,使其包含单词 "Camel"。
org.apache.camel.component.mail.SimpleSearchTerm 含有您可以配置的多个选项:

或者要提前 24 小时内向接收新的未报电子邮件。注意"now-24h"语法。详情请查看下表。

<route>
  <from uri="imaps://mymailseerver?username=foo&password=secret&searchTerm.fromSentDate=now-24h"/>
  <to uri="bean:myBean"/>
</route>
Copy to Clipboard Toggle word wrap

您可以在 endpoint uri 配置中有多个搜索Term。然后,使用 AND 运算符将它们合并在一起,这样这两个条件都必须匹配。例如,要得到最后的未发电子邮件恢复 24 小时,邮件主题中有 Camel:

<route>
  <from uri="imaps://mymailseerver?username=foo&password=secret&searchTerm.subject=Camel&searchTerm.fromSentDate=now-24h"/>
  <to uri="bean:myBean"/>
</route>
Copy to Clipboard Toggle word wrap

SimpleSearchTerm 可从 POJO 轻松配置,因此您也可以使用 XML 中的 <bean> 风格进行配置。

<bean id="mySearchTerm" class="org.apache.camel.component.mail.SimpleSearchTerm">
  <property name="subject" value="Order"/>
  <property name="to" value="acme-order@acme.com"/>
  <property name="fromSentDate" value="now"/>
 </bean>
Copy to Clipboard Toggle word wrap

然后,您可以使用 Camel 路由中的 #beanId 引用此 bean,如下所示:

<route>
  <from uri="imaps://mymailseerver?username=foo&password=secret&searchTerm=#mySearchTerm"/>
  <to uri="bean:myBean"/>
</route>
Copy to Clipboard Toggle word wrap

在 Java 中,有一个构建器类使用 org.apache.camel.component.SearchTermBuilder 类来构建复合搜索终端。这可让您构建复杂的术语,例如:

// we just want the unseen mails which is not spam
SearchTermBuilder builder = new SearchTermBuilder();

builder.unseen().body(Op.not, "Spam").subject(Op.not, "Spam")
  // which was sent from either foo or bar
  .from("foo@somewhere.com").from(Op.or, "bar@somewhere.com");
  // .. and we could continue building the terms

SearchTerm term = builder.build();
Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat