2009-10-14 2 views
40

현재 우리 응용 프로그램은 javax.mail.MailMessage를 사용하여 javax.mail을 사용하여 전자 메일을 보냅니다. 우리는 전자 메일의 헤더에서이 방법을 설정 : 이것은 잘 작동하지만, 우리가하고 싶습니다javax.mail.MimeMessage에서 이름을 설정 하시겠습니까?

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

사용자 친화적 조금 더 "절에서". 현재 이메일을받은 사용자는받은 편지함의 '보낸 사람'섹션에 '[email protected]'이 표시됩니다. 대신, 우리는 그들에게 "Company XYZ"를 보길 원합니다. 이것은 아마도 addHeader() 메소드로 수행 된 것으로 생각되지만, 헤더 이름이 무엇인지는 확실치 않습니다.

답변

89

OK, 관련된 모든 수업에 관한 문서를 읽는 것이 도움이되었을 것입니다. 올바른 구문은해야

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

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

+2

"회사 XYZ는 <[email protected]>"사용 허용하는지 여부를 테스트 할 가치가있을 수도 있습니다 IntenetAddress (String, boolean) 생성자. 주소 구문을 엄격하게 검사하지만 여전히 개인 이름이 있습니다. – erickson

15

당신이 하나 개의 문자열에 이메일 + 이름을 저장하려면 (쉽게 두 개의 문자열 유지 이상)의 경우 경우에

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

+1이 솔루션은 스프링 메일의 'SimpleMimeMessage'에서도 작동하기 때문에 'MimeMessage'인스턴스에 액세스 할 수 없으며 직접'InternetAddress'를 사용하지 않습니다. 문자열에서만 작동합니다. – Jagger

+0

감사합니다 !! 그것은 일했다! – JRichardsz

0

을 \ u00FA와 같은 특수 문자가 포함 된 현지화 된 텍스트를 사용했습니다. 일부 pop3 클라이언트의 전자 메일 주소 별칭 인코딩에 문제가있었습니다.

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

는 그것은 호출에 의해 별도의 이메일 주소와 별명으로 해결할 수 있습니다

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

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