Estoy escribiendo una parte de código Java que necesita enviar correo a usuarios con nombres que no sean ASCII. He descubierto cómo usar UTF-8 para el cuerpo, la línea de asunto y los encabezados genéricos, pero todavía estoy atascado en los destinatarios .¿Enviar javax.mail.internet.MimeMessage a un destinatario con nombre no ASCII?
Esto es lo que me gustaría en el campo "Para:": "ウィキペディアにようこそ" <[email protected]>
. Esto vive (para nuestros propósitos hoy) en una cadena llamada recip
.
msg.addRecipients(MimeMessage.RecipientType.TO, recip)
da"忙俾ェ▎S]" <[email protected]>
msg.addHeader("To", MimeUtility.encodeText(recip, "utf-8", "B"))
tirosAddressException: Local address contains control or whitespace in string ``=?utf-8?B?IuOCpuOCo+OCreODmuODh+OCo+OCouOBq+OCiOOBhuOBk+OBnSIgPA==?= =?utf-8?B?Zm9vQGV4YW1wbGUuY29tPg==?=''
¿Cómo diablos se supone que voy a enviar este mensaje?
Así es como he manejado los demás componentes:
- cuerpo HTML:
msg.setText(body, "UTF-8", "html");
- Cabeceras:
msg.addHeader(name, MimeUtility.encodeText(value, "utf-8", "B"));
- Asunto:
msg.setSubject(subject, "utf-8");
preguntas relacionadas y solución: http://stackoverflow.com/a/5650455/923560 – Abdull