目前,我们的应用程序使用javax.mail发送电子邮件,使用javax.mail.MailMessage。 我们设置了从电子邮件这样的标题:
Message msg = new MimeMessage(mailSession);
msg.setFrom(new InternetAddress("mail@companyxyz.com"));
这只是正常的,但我们想使“从”部分更人性化一点。 目前,有人收到一封电子邮件,会看到“mail@companyxyz.com”,在“从”收件箱的部分。 相反,我们希望他们看到“XYZ公司”出现。 我想这可能是随的addHeader()方法来实现,但我不知道头名称会是什么。
OK,阅读文档,所有参与将是有益的类。 正确的语法应为
Message msg = new MimeMessage(mailSession);
msg.setFrom(new InternetAddress("mail@companyxyz.com", "Company XYZ"));
来源: https://javamail.java.net/nonav/docs/api/javax/mail/internet/InternetAddress.html
如果你想存储的电子邮件+名称在一个字符串(更容易比保持两个String):
Message msg = new MimeMessage(mailSession);
msg.setFrom(new InternetAddress("Company XYZ <mail@companyxyz.com>"));
在情况下,当我用本地化的特殊字符,如\ 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"));
REF: https://javamail.java.net/nonav/docs/api/javax/mail/internet/InternetAddress.html#InternetAddress(java.lang.String,%20java.lang.String,%20java.lang.String)
ic = new InitialContext();
final Session session = (Session) ic.lookupLink(snName);
final Properties props = session.getProperties();
props.put("mail.from", mailFrom); //blabla@mail.com
props.put("mail.from.alias", mailName);//"joao Ninguem"
// Create a message with the specified information.
final MimeMessage msg = new MimeMessage(session);
msg.setSubject(subject);
msg.setSentDate(new Date());
msg.setFrom(new InternetAddress(session.getProperty("mail.from"), session.getProperty("mail.from.alias"), "UTF8"));
msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(mailTo, false));
msg.setContent(body, "text/html");
// Create a transport.
Transport.send(msg);