如何使用 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。
我正在使用 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。