Как фильтровать электронные письма по теме при опросе в 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();
}
Другие вопросы по тегам