Я создаю службу, которая должна прослушивать и обрабатывать любые новые электронные письма, полученные в учетной записи электронной почты.
Проблема: Я не могу преобразовать сообщение, которое я получаю в метод handleMessageInternal(Message<?> message)
в любую форму типа MimeMessage, с которым я могу работать, чтобы получить адреса / cc и / или любой вложенный файл.
Мой класс MailConfiguration:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.integration.dsl.IntegrationFlow;
import org.springframework.integration.dsl.IntegrationFlows;
import org.springframework.integration.mail.dsl.Mail;
import org.springframework.integration.mail.support.DefaultMailHeaderMapper;
import org.springframework.integration.mapping.HeaderMapper;
import org.springframework.integration.scheduling.PollerMetadata;
import org.springframework.scheduling.support.PeriodicTrigger;
import javax.mail.internet.MimeMessage;
@Configuration
public class MailConfiguration {
@Bean
public IntegrationFlow imapMailFlow() {
return IntegrationFlows
.from(Mail.imapInboundAdapter("imaps://username:pass123@imap.gmail.com:" + 993 + "/INBOX")
.javaMailProperties(p -> p.put("mail.debug", "true"))
.headerMapper(mailHeaderMapper()),
e -> e.autoStartup(true).poller(p -> p.fixedDelay(5000)))
.handle(new MailHandler())
.get();
}
@Bean
public HeaderMapper<MimeMessage> mailHeaderMapper() {
return new DefaultMailHeaderMapper();
}
@Bean(name = PollerMetadata.DEFAULT_POLLER)
public PollerMetadata defaultPoller() {
PollerMetadata pollerMetadata = new PollerMetadata();
pollerMetadata.setTrigger(new PeriodicTrigger(1000));
return pollerMetadata;
}
}
Мой класс MailHandler:
import org.springframework.integration.handler.AbstractMessageHandler;
import org.springframework.messaging.Message;
import org.springframework.stereotype.Component;
import javax.mail.internet.MimeMessage;
@Component
public class MailHandler extends AbstractMessageHandler {
@Override
protected void handleMessageInternal(Message<?> message) {
System.out.println("RECEIVED NEW MAIL");
//Doesnt Work
MimeMessage mimeMessage = (MimeMessage) message.getPayload();
//Doesnt Work
MimeMessage mimeMessage = (MimeMessage) message;
}
}
Если возможно преобразовать сообщение в модель пользовательского домена, которая также будет работать.
Любая помощь будет принята с благодарностью.