java - 无法在 Java 中解析此多部分 MIME 消息正文

标签 java jakarta-mail mime multipart

我不是在编写邮件应用程序,所以我无权访问所有标题等。我所拥有的只是这个问题末尾的 block 。我试过使用 JavaMail API 来解析它,使用类似

Session s = Session.getDefaultInstance(new Properties());
InputStream is = new ByteArrayInputStream(<< String to parse >>);
MimeMessage message = new MimeMessage(s, is);
Multipart multipart = (Multipart) message.getContent();

但是,它只是告诉我 message.getContent 是一个字符串,而不是 Multipart 或 MimeMultipart。另外,我真的不需要整个 JavaMail API 的所有开销,我只需要将文本解析成它的部分。这是一个例子:

This is a multi-part message in MIME format.\n\n------=_NextPart_000_005D_01CC73D5.3BA43FB0\nContent-Type: text/plain;\n\tcharset="iso-8859-1"\nContent-Transfer-Encoding: quoted-printable\n\nStuff:\n\n            Please read this stuff at the beginning of each week.  =\nFeel free to discuss it throughout the week.\n\n\n--=20\n\nMrs. Suzy M. Smith\n555-555-5555\nsuzy@suzy.com\n------=_NextPart_000_005D_01CC73D5.3BA43FB0\nContent-Type: text/html;\n\tcharset="iso-8859-1"\nContent-Transfer-Encoding: quoted-printable\n\n\n\n\n\n\n\n\n\nStuff:

\n           =20\nPlease read this stuff at the beginning of each =\nweek.  Feel=20\nfree to discuss it throughout the week.

\n
--

Mrs. Suzy M. Smith
555-555-5555
suzy@suzy.com\n\n------=_NextPart_000_005D_01CC73D5.3BA43FB0--\n\n

最佳答案

首先,我采用了您的示例消息,并将所有出现的 \n 替换为换行符,将 \t 替换为制表符。

然后我从 Mime4J 下载了 JAR项目,子项目 Apache James , 并执行 GUI 解析 example org.apache.james.mime4j.samples.tree.MessageTree 将上面转换后的消息作为输入。显然 Mime4J 能够解析消息并提取 HTML 消息部分。

关于java - 无法在 Java 中解析此多部分 MIME 消息正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7677759/

相关文章:

android - 使用带有 smtp 但没有 SSL 的 JavaMail API 在 android 中发送电子邮件

javascript - dropzone.js - acceptedMimeTypes

java - 如何在 JavaFX 应用程序上显示具有相对路径的图像?

gmail - 如何使用JavaMailSender使用gmail的 "confidential mode"

java - 如何以编程方式添加 Eclipse 任务标签(Eclipse 插件开发)?

java - Java Mail API 的替代品

java - 如何在 Java 中从 MimeMessage 电子邮件中检索正文

mysql - MIME 电子邮件 - While 循环 - 数据库 - 错误

java - 对特定子 json 应用 gson UPPER_CAMEL_CASE

java - 获取 libGDX And​​roid 游戏的目录文件和类加载器