2009-10-14 17 views
40

Attualmente, la nostra applicazione utilizza javax.mail per inviare e-mail, utilizzando javax.mail.MailMessage. Abbiamo impostato la dalle intestazioni delle email in questo modo:Impostazione del nome da in un javax.mail.MimeMessage?

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

Questo funziona bene, ma vorremmo fare la sezione di un po 'più user-friendly "Da". Attualmente, qualcuno che riceve un'email vedrà "[email protected]" nella sezione "Da" della sua posta in arrivo. Invece, vorremmo che vedessero "Company XYZ" lì. Immagino che questo è probabilmente fatto con il metodo addHeader(), ma non sono sicuro di quale sarebbe il nome dell'intestazione.

risposta

89

OK, leggere la documentazione su TUTTE le classi coinvolte sarebbe stato utile. La sintassi corretta dovrebbe essere

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

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

+2

Potrebbe valere la pena testare se "Società XYZ <[email protected]>" consente di utilizzare il costruttore IntenetAddress (String, boolean) per controllare rigorosamente la sintassi dell'indirizzo ma avere ancora un nome personale. – erickson

15

Se si desidera memorizzare l'e-mail + il nome in una stringa (più facile che mantenere due string):

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

+1 perché questa soluzione funziona anche con 'SimpleMimeMessage' di Spring Mail, dove non è possibile accedere a nessuna istanza di' MimeMessage' e non viene utilizzato direttamente 'InternetAddress'. Funziona solo su stringhe. – Jagger

+0

Grazie !! ha funzionato!! – JRichardsz

0

Nel caso in cui Ho usato il testo localizzato con caratteri speciali come \ u00FA ho avuto problemi con l'alias di indirizzo email di codifica per alcuni client pop3 se avessi usato solo

può essere risolto per indirizzo e-mail separato e alias Invoke:

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)

Problemi correlati