2009-10-14 33 views
40

Obecnie nasza aplikacja korzysta z javax.mail do wysyłania wiadomości e-mail przy użyciu javax.mail.MailMessage. Ustawiamy Od nagłówków wiadomości e-mail w ten sposób:Ustawianie nazwy w javax.mail.MimeMessage?

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

Działa to dobrze, ale chcielibyśmy, aby „Od” części trochę bardziej przyjazny dla użytkownika. Obecnie ktoś otrzymujący wiadomość e-mail zobaczy "[email protected]" w sekcji "Od" swojej skrzynki odbiorczej. Zamiast tego chcielibyśmy, aby zobaczyli tam "Firmę XYZ". Myślę, że jest to prawdopodobnie zrobione przy użyciu metody addHeader(), ale nie jestem pewien, jaka byłaby nazwa nagłówka.

Odpowiedz

89

OK, pomocne byłoby przeczytanie dokumentacji o WSZYSTKICH zajęciach. Poprawna składnia powinna być

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

Źródło: https://javamail.java.net/nonav/docs/api/javax/mail/internet/InternetAddress.html

+2

To może być warta testowania czy "Firma XYZ <[email protected]>" pozwala na użycie Konstruktor IntenetAddress (String, boolean), aby dokładnie sprawdzić składnię adresu, ale nadal ma nazwę osobistą. – erickson

15

Jeśli chcesz zapisać email + nazwę w jeden ciąg (łatwiej niż utrzymywanie dwóch String):

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

+1, ponieważ to rozwiązanie działa również w połączeniu z 'SimpleMimeMessage' Spring Mail, gdzie nie można uzyskać dostępu do instancji' MimeMessage' i bezpośrednio nie korzysta się z 'InternetAddress'. Działa tylko na łańcuchach. – Jagger

+0

Dzięki! zadziałało!! – JRichardsz

0

w przypadku, gdy Użyłem zlokalizowanego tekstu ze znakami specjalnymi, takimi jak \ u00FA Miałem problemy z kodowaniem aliasu adresów e-mail dla niektórych klientów pop3, jeśli użyłem tylko

To może być rozwiązana przez osobnego adresu e-mail i przez alias powołaniem:

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)