218.17. 사용자 정의 SearchTerm 사용
Camel 2.11로 사용 가능
원하지 않는 이메일을 필터링할 수 있는 mailEndpoint
에서 searchTerm
을 구성할 수 있습니다.
예를 들어 제목 또는 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시간 동안 보이지 않는 마지막 이메일을 얻으려면 다음을 수행할 수 있습니다.
<route> <from uri="imaps://mymailseerver?username=foo&password=secret&searchTerm.subject=Camel&searchTerm.fromSentDate=now-24h"/> <to uri="bean:myBean"/> </route>
SimpleSearchTerm
은 Cryostat에서 쉽게 구성할 수 있도록 설계되었으므로 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.SearchTermer 클래스를 사용하여 복합
클래스가 있습니다. 이렇게 하면 다음과 같은 복잡한 용어를 빌드할 수 있습니다.
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();