2009-10-14 13 views
40

Hiện tại, ứng dụng của chúng tôi sử dụng javax.mail để gửi email, sử dụng javax.mail.MailMessage. Chúng tôi đặt tiêu đề Từ của email theo cách này:Đặt tên từ trong javax.mail.MimeMessage?

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

Điều này làm việc tốt, nhưng chúng tôi muốn làm cho phần "Từ" thân thiện với người dùng hơn một chút. Hiện tại, ai đó nhận được email sẽ thấy "[email protected]" trong phần "Từ" trong hộp thư đến của họ. Thay vào đó, chúng tôi muốn họ thấy "Công ty XYZ" ở đó. Tôi hình này có thể được thực hiện với phương thức addHeader(), nhưng tôi không chắc chắn tên của phần đầu sẽ là gì.

Trả lời

89

OK, đọc tài liệu về TẤT CẢ các lớp học có liên quan sẽ hữu ích. Cú pháp chính xác nên được

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

Nguồn: https://javamail.java.net/nonav/docs/api/javax/mail/internet/InternetAddress.html

+2

Nó có thể là giá trị thử nghiệm xem "Công ty XYZ <[email protected]>" cho phép bạn sử dụng phương thức khởi tạo IntenetAddress (String, boolean) để kiểm tra chặt chẽ cú pháp địa chỉ nhưng vẫn có tên cá nhân. – erickson

15

Nếu bạn muốn lưu trữ các email + tên trong một chuỗi (dễ dàng hơn giữ hai string):

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

+1 vì giải pháp này cũng hoạt động với 'SimpleMimeMessage' của Spring Mail, trong đó không có thể hiện của' MimeMessage' có thể được truy cập và không có 'InternetAddress' được sử dụng trực tiếp. Nó chỉ hoạt động trên dây. – Jagger

+0

Cảm ơn !! nó đã làm việc!! – JRichardsz

0

Trong trường hợp khi Tôi đã sử dụng văn bản được bản địa hóa với các ký tự đặc biệt như \ u00FA Tôi gặp sự cố với mã hóa bí danh địa chỉ email cho một số ứng dụng khách POP3 nếu tôi chỉ sử dụng

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

Nó có thể được giải quyết bằng địa chỉ email riêng và bí danh của 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)

Các vấn đề liên quan