如何使用 Spring Integration Mail 从 "text/html; charset=us-ascii" 检索电子邮件内容正文

How to retrieve email content body from "text/html; charset=us-ascii" with Spring Integration Mail

我正在使用 Spring Integration Mail 从 Exchange Server 中提取和处理电子邮件的内容。 使用 imap-idle-channel-adapter。电子邮件被拉得很好。 如果邮件有附件,内容类型为multipart/mixed(“text/html; charset=us-ascii”和附件)和邮件正文来自text/html; charset=us-ascii 检索正常。

但是,如果电子邮件没有附件,则内容类型仅为“text/html;charset=us-ascii”。有时,它以“text/html charset=windows-1252”的形式出现。 在任何情况下,即使内容对象是字符串,电子邮件正文也会被检索为 null 或空。

我应该如何检索电子邮件正文?如果电子邮件是 multipart/mixed,则可以正常检索 text/html 的电子邮件正文。太奇怪了!

代码

控制台

配置是这样的

<int-mail:imap-idle-channel-adapter id="customAdapter"
  store-uri="imaps://[username]:[password]@[exchange-imap-server]:993/INBOX"
  channel="receiveChannel"
  auto-startup="true"
  should-delete-messages="false"
  should-mark-messages-as-read="true"
  auto-close-folder="false"
  java-mail-properties="javaMailProperties"/>

<util:properties id="javaMailProperties">
  <prop key="mail.imap.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop>
  <prop key="mail.imap.socketFactory.fallback">false</prop>
  <prop key="mail.store.protocol">imaps</prop>
  <prop key="mail.debug">false</prop>
</util:properties>

 

如我所说,电子邮件正文无法检索仅当电子邮件没有附件时。内容类型是“text/html; charset=us-ascii”.

如果内容为“multipart/mixed”,即使电子邮件正文的 BodyPart 具有相同的内容类型“text/html;charset=us-ascii”,也可以正常检索电子邮件正文内容.

从 gmail 中提取电子邮件时,在所有情况下都检索相同的代码。

最后,当电子邮件没有附件时,我能够检索到内容文本。内容类型是“text/html; charset=us-ascii”。我在 Outlook (Exchange Server) 和 Gmail 中测试了修复。 修复是在 imap-idle-channel-adapter

中添加

简单内容=真

负载将是 javax.mail.Message,而不是 IMAPMessage。