2009-10-14 21 views
40

Actualmente, nuestra aplicación utiliza javax.mail para enviar correos electrónicos, utilizando javax.mail.MailMessage. Hemos establecido el A partir de las cabeceras del correo electrónico de esta manera:Configurando el nombre de from en javax.mail.MimeMessage?

Message msg = new MimeMessage(mailSession); 
msg.setFrom(new InternetAddress("[email protected]")); 

Esto funciona muy bien, pero nos gustaría hacer la sección "De" un poco más fácil de usar. Actualmente, alguien que recibe un correo electrónico verá "[email protected]" en la sección "De" de su bandeja de entrada. En su lugar, nos gustaría que vean "Company XYZ" allí. Me imagino que esto probablemente se haga con el método addHeader(), pero no estoy seguro de cuál será el nombre del encabezado.

Respuesta

89

OK, leer documentación sobre TODAS las clases involucradas hubiera sido útil. La sintaxis correcta debería ser

Message msg = new MimeMessage(mailSession); 
msg.setFrom(new InternetAddress("[email protected]", "Company XYZ")); 

Fuente: https://javamail.java.net/nonav/docs/api/javax/mail/internet/InternetAddress.html

+2

Podría valer la pena probar si "empresa XYZ <[email protected]>" le permite utilizar el constructor IntenetAddress (String, boolean) para verificar estrictamente la sintaxis de la dirección pero aún tener un nombre personal. – erickson

15

Si desea almacenar el correo + el nombre en una cadena (más fácil de mantener dos cuerdas):

Message msg = new MimeMessage(mailSession); 
msg.setFrom(new InternetAddress("Company XYZ <[email protected]>")); 
+0

+1 porque esta solución también funciona con 'SimpleMimeMessage' de Spring Mail, donde no se puede acceder a ninguna instancia de' MimeMessage' y no se usa 'InternetAddress' directamente. Funciona solo en cadenas. – Jagger

+0

¡Gracias! ¡¡funcionó!! – JRichardsz

0

En caso cuando Utilicé texto localizado con caracteres especiales como \ u00FA. Tuve problemas con la codificación del alias de la dirección de correo electrónico para algunos clientes pop3 si solo hubiera usado

MimeMessage m = new MimeMessage(session); 
m.setFrom(); 

Se pueden resolverse mediante la dirección de correo electrónico separada y alias de invocación:

MimeMessage m = new MimeMessage(session); 
      m.setFrom(new InternetAddress(session.getProperty("mail.from"), session.getProperty("mail.from.alias"),"UTF8")); 

ref: https://javamail.java.net/nonav/docs/api/javax/mail/internet/InternetAddress.html#InternetAddress(java.lang.String,%20java.lang.String,%20java.lang.String)

Cuestiones relacionadas