将包含原始8位部件的MIME电子邮件转换为仅包含7位部件的RFC822兼容消息的最简单方法是什么?
部件必须自动转换为“Content-Transfer-Encoding:quoted-printable”。
我的应用程序是用Java开发的。但命令行工具会很棒。我尝试过改造,但这个工具似乎有些错误,并没有正确地重写消息: - (
感谢您的帮助,
奥利弗
答案 0 :(得分:2)
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()
覆盖为无操作。