Как фильтровать электронные письма по теме при опросе в Spring Integration
Я хотел бы опросить электронные письма, основанные на теме.
Если мы хотим опросить электронные письма с темой "Тест", приведенный ниже код извлекает все электронные письма. Но нам нужно отфильтровать письма с темой "Тест".
Как я могу фильтровать по теме?
@Configuration
@EnableIntegration
public class PollSubjectEmail {
@Bean
public IntegrationFlow pop3MailFlow() {
return IntegrationFlows
.from(Mail.pop3InboundAdapter(“xxx.host.com", pop3Port, “username”, “password”)
.javaMailProperties(p -> p.put("mail.debug", "true")),
e -> e.autoStartup(true).poller(Pollers.fixedDelay(6000)))
.enrichHeaders(s -> s.headerExpressions(h -> h.put(MailHeaders.SUBJECT, "payload.subject")
.put(MailHeaders.FROM, "payload.from[0].toString()")))
.channel("pop3Channel").get();
}
}
Я использую pop3Channel и попытался с помощью фильтра. Однако не уверен, как добраться до решения.
0 ответов
Я знаю, что это очень старый вопрос, отвечая на него, поскольку он может быть полезен любому, у кого есть такие же требования.
Используйте MailInboundChannelAdapterSpeC# selectorExpression("здесь идет какое-то выражение")
@Bean
public IntegrationFlow pop3MailFlow() {
return IntegrationFlows
.from(Mail.pop3InboundAdapter("xxx.host.com", pop3Port, “username”, “password”)
.javaMailProperties(p -> p.put("mail.debug", "true")
/* Add the expression as below*/
.selectorExpression("subject matches '(?i).*Test.*'")),
e -> e.autoStartup(true).poller(Pollers.fixedDelay(6000)))
.enrichHeaders(s -> s.headerExpressions(h -> h.put(MailHeaders.SUBJECT, "payload.subject")
.put(MailHeaders.FROM, "payload.from[0].toString()")))
.channel("pop3Channel").get();
}