将包含原始 8 位部分的 MIME 电子邮件转换为仅包含 7 位部分的符合 RFC822 的邮件的最简单方法是什么?
这些部分必须自动转换为“Content-Transfer-Encoding:quoted-printable”。
我的应用程序是用 Java 开发的。但是命令行工具会很棒。我尝试了reformime,但这个工具似乎有问题并且不能正确重写消息:-(
感谢您的帮助,
奥利维尔
将包含原始 8 位部分的 MIME 电子邮件转换为仅包含 7 位部分的符合 RFC822 的邮件的最简单方法是什么?
这些部分必须自动转换为“Content-Transfer-Encoding:quoted-printable”。
我的应用程序是用 Java 开发的。但是命令行工具会很棒。我尝试了reformime,但这个工具似乎有问题并且不能正确重写消息:-(
感谢您的帮助,
奥利维尔
JavaMail 似乎是一个很好的解决方案。从您的文件中创建一个MimeMessage
,找到您想要更改其内容传输编码的正文部分,调用MimeBodyPart.setHeader("Content-Transfer-Encoding", "quoted-printable")
并通过MimeMessage.writeTo()
.
类似这样的东西:
Session session = Session.getInstance(new Properties());
MimeMessage mm = new MimeMessage(new FileInputStream(msgfile));
// assuming we know that it's a multipart; otherwise, check Content-Type first...
MimeMultipart multi = (MimeMultipart) mm.getContent();
for (int i = 0; i < multi.getCount(); i++) {
MimeBodyPart mbp = (MimeBodyPart) multi.getBodyPart(i);
mbp.setHeader("Content-Transfer-Encoding", "quoted-printable");
}
mm.saveChanges();
mm.writeTo(new FileOutputStream(outfile));
请注意,默认情况下,当您对邮件进行更改时MimeMessage
会重置标题。Message-ID
如果您不想这样做,请覆盖MimeMessage.updateMessageID()
为无操作。