在javax.mail.MimeMessage中设置from name?

abe*_*ger 46 java email javax.mail mime-message

目前,我们的应用程序使用javax.mail来发送电子邮件,使用javax.mail.MailMessage.我们以这种方式设置电子邮件的From标头:

Message msg = new MimeMessage(mailSession);
msg.setFrom(new InternetAddress("mail@companyxyz.com"));
Run Code Online (Sandbox Code Playgroud)

这很好用,但我们想让"From"部分更加用户友好.目前,收到电子邮件的人会在收件箱的"发件人"部分看到"mail@companyxyz.com".相反,我们希望他们在那里看到"公司XYZ".我认为这可能是使用addHeader()方法完成的,但我不确定标题名称是什么.

abe*_*ger 108

好的,阅读有关所涉及的所有类的文档会有所帮助.应该是正确的语法

Message msg = new MimeMessage(mailSession);
msg.setFrom(new InternetAddress("mail@companyxyz.com", "Company XYZ"));
Run Code Online (Sandbox Code Playgroud)

资料来源:https://javamail.java.net/nonav/docs/api/javax/mail/internet/InternetAddress.html

  • 可能值得测试"公司XYZ <mail@companyxyz.com>"是否允许您使用IntenetAddress(String,boolean)构造函数来严格检查地址语法,但仍具有个人名称. (2认同)

che*_*ist 19

如果要将电子邮件+名称存储在一个字符串中(比保留两个字符串更容易):

Message msg = new MimeMessage(mailSession);
msg.setFrom(new InternetAddress("Company XYZ <mail@companyxyz.com>"));
Run Code Online (Sandbox Code Playgroud)

  • +1,因为此解决方案也适用于 Spring Mail 的“SimpleMimeMessage”,其中无法访问“MimeMessage”实例,也不能直接使用“InternetAddress”。它仅在字符串上运行。 (2认同)