2012-02-03 2 views
3

У меня есть Java-код, который рассылает письмо с кодом несколько, как следующее:JavaMail base64 кодирование

MimeBodyPart part = new MimeBodyPart(); 
part.setContent(htmlString, "text/html; charset=\"UTF-8\""); 
part.setHeader("MIME-Version", "1.0"); 
part.setHeader("Content-Type", "text/html; charset=\"UTF-8\""); 
part.setHeader("Importance", severityVal); 

mimeMultiPart.addBodyPart(htmlPart); 
mimeMessage.setContent(mimeMultiPart); 

... и так далее.

Как я могу кодировать «часть» MimeBodyPart в base64 для этого исходящего письма?

ответ

7

От docs:

Q: Даже если JavaMail делает все кодирование и декодирование для меня, мне нужно вручную управлять кодировки для некоторых частей тела. A: В редком случае, когда вам нужно управлять кодировкой, существует несколько способов переопределить поведение JavaMail по умолчанию. Простой подход заключается в следующем. После создания всего сообщения вызовите msg.saveChanges(), а затем используйте что-то вроде mbp.setHeader("Content-Transfer-Encoding", "base64") для принудительной кодировки base64 для данной части тела.

Другой подход заключается в подкласс MimeBodyPart и переопределить метод updateHeaders так, чтобы он сначала вызывает super.updateHeaders(), а затем устанавливает заголовок Content-Transfer-Encoding, как указано выше.

2

просто добавить это заявление:

part.setHeader("Content-Transfer-Encoding", "base64"); 

после строк кода, которые устанавливают или part.setContent(...), и DataSource/Handler будет адаптируются для соответствия кодирования передачи контента вы только что указали на части тела ,

Вы можете также рассмотреть вопрос о создании заголовков тем же самым, например .:

part.setHeader("Content-Type", "application/octet-stream"); 
Смежные вопросы