从mime消息获取消息内容?

时间:2020-04-17 19:24:00

标签: spring email spring-integration

我有一个Java Spring集成项目,该项目通过以下代码接收电子邮件:

  ClassPathXmlApplicationContext ac =
        new ClassPathXmlApplicationContext(
            "/integration/gmail-imap-idle-config.xml");
   DirectChannel inputChannel = ac.getBean("receiveChannel", DirectChannel.class);

            inputChannel.subscribe(message -> {
                org.springframework.messaging.Message<MimeMailMessage> received =
                    (org.springframework.messaging.Message<MimeMailMessage>) message;

                log.info("content" + message);

                List<String> sentences = null;
                try {


            } catch (Exception e) {

                }

我收到了电子邮件,也知道了主题,但是我实际上无法提取消息正文。我该怎么做呢? 谢谢!

1 个答案:

答案 0 :(得分:1)

您必须在通道适配器上使用此选项:

simple-content="true"

查看其描述:

为“ true”时,由源产生的消息将由“ MimeMessage.getContent()”呈现。 通常只是简单文本电子邮件的正文。为假(默认)时,内容 由底层基础返回的实际消息上的“ getContent()”方法呈现 javamail实现。 例如,使用一些消息头来呈现IMAP消息。 提供此属性是为了使用户可以启用以前的行为, 渲染了身体。

但是仍然值得怀疑,因为我发现在发生GMail消息的情况下,这绝非易事。内容是MimeMultipart,我们需要阅读其内容才能访问真实的身体。

因此,这也是您也应更改代码的方式:

log.info("content" + ((MimeMultipart) ((MimeMessage) message.getPayload()).getContent()).getBodyPart(0).getContent());