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>

"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>

끝점 URI 구성에 여러 개의 searchTerm을 가질 수 있습니다. 그런 다음 AND 연산자를 사용하여 함께 결합되므로 두 조건이 모두 일치해야 합니다. 예를 들어, 이메일 제목에 Camel이 있는 24시간을 지원하는 마지막 비seen 이메일을 얻으려면 다음을 수행할 수 있습니다.

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

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>

그런 다음 다음과 같이 Camel 경로에서 #beanId를 사용하여 이 빈을 참조할 수 있습니다.

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

Java에는 org.apache.camel.component.mail.SearchTermBuilder 클래스를 사용하여 복합 SearchTerms 를 빌드하는 빌더 클래스가 있습니다. 이렇게 하면 다음과 같은 복잡한 용어를 구축할 수 있습니다.

// 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();