启用消息映射后,有效负载取决于邮件消息及其实现。电子邮件内容通常由DataHandler
中的MimeMessage
呈现。
我正在创建一项需要侦听和处理邮件帐户中收到的任何新电子邮件的服务。
问题:我无法将在handleMessageInternal(Message<?> message)
方法中收到的消息转换为MimeMessage类型的任何形式,可以用来获取to / cc地址和/或附加的任何文件。] >
我的邮件配置类:
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:[email protected]:" + 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; } }
如果有可能将消息转换为也可以使用的自定义域模型。
任何帮助将不胜感激。
我正在创建一项服务,该服务需要侦听和处理邮件帐户中收到的任何新电子邮件。问题:我无法转换在handleMessageInternal(...)中收到的消息
autoCloseFolder(false)
,并且不应具有该.headerMapper(mailHeaderMapper())
。启用消息映射后,有效负载取决于邮件消息及其实现。电子邮件内容通常由DataHandler
中的MimeMessage
呈现。
也是这里:https://docs.spring.io/spring-integration/docs/5.3.0.RC1/reference/html/mail.html#mail-inbound
保持文件夹打开状态在解析带有附件的电子邮件的多部分内容时需要与服务器通信的情况下很有用。
这样,您的处理程序中的message.getPayload()
实际上可以转换为MimeMessage
。
启用消息映射后,有效负载取决于邮件消息及其实现。电子邮件内容通常由DataHandler
中的MimeMessage
呈现。