Currently, our application uses a javax.mail to send email, using javax.mail.MailMessage. We set the From headers of the email this way:
Message msg = new MimeMessage(mailSession);
msg.setFrom(new InternetAddress("mail@companyxyz.com"));
This works just fine, but we'd like to make the "From" section a little more user-friendly. Currently, someone receiving an email will see "mail@companyxyz.com" in the "From" section of their inbox. Instead, we'd like them to see "Company XYZ" there. I figure this is probably done with the addHeader() method, but I'm not sure what the header name would be.
OK, reading documentation about ALL the classes involved would have been helpful. The correct syntax should be
Message msg = new MimeMessage(mailSession);
msg.setFrom(new InternetAddress("mail@companyxyz.com", "Company XYZ"));
Source: https://javamail.java.net/nonav/docs/api/javax/mail/internet/InternetAddress.html
If you want to store the email + the name in one string (easier than keeping two string):
Message msg = new MimeMessage(mailSession);
msg.setFrom(new InternetAddress("Company XYZ <mail@companyxyz.com>"));
In case when I used localized text with special characters like \u00FA I had problems with encoding email address alias for some pop3 clients if I'd used just
MimeMessage m = new MimeMessage(session);
m.setFrom();
It can be resolved by separate email address and alias by invoke:
MimeMessage m = new MimeMessage(session);
m.setFrom(new InternetAddress(session.getProperty("mail.from"), session.getProperty("mail.from.alias"),"UTF8"));
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);
来源:https://stackoverflow.com/questions/1567467/setting-the-from-name-in-a-javax-mail-mimemessage