Конвертировать 8-битное MIME-сообщение в цитируемое для печати - PullRequest
2 голосов
/ 21 января 2011

Какой самый простой способ преобразовать электронную почту MIME, содержащую необработанные 8-битные части, в сообщение, соответствующее RFC822, содержащее только 7-битные части?
Части должны быть автоматически преобразованы в «Content-Transfer-Encoding: quoted-printable».

Мое приложение разработано на Java. Но инструмент командной строки был бы отличным. Я попытался преобразовать, но этот инструмент кажется ошибочным и не переписывает сообщение должным образом: - (

Спасибо за любую помощь,
Оливье

1 Ответ

2 голосов
/ 21 января 2011

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() для запрета.

...