将8位MIME邮件转换为quoted-printable

时间:2011-01-21 02:17:42

标签: email mime quoted-printable 8-bit

将包含原始8位部件的MIME电子邮件转换为仅包含7位部件的RFC822兼容消息的最简单方法是什么?
部件必须自动转换为“Content-Transfer-Encoding:quoted-printable”。

我的应用程序是用Java开发的。但命令行工具会很棒。我尝试过改造,但这个工具似乎有些错误,并没有正确地重写消息: - (

感谢您的帮助,
奥利弗

1 个答案:

答案 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()覆盖为无操作。