Установка имени отправителя в javax.mail.MimeMessage?
-
21-09-2019 - |
Вопрос
В настоящее время наше приложение использует javax.mail для отправки электронной почты, используя javax.mail.MailMessage.Мы устанавливаем заголовки From электронного письма следующим образом:
Message msg = new MimeMessage(mailSession);
msg.setFrom(new InternetAddress("mail@companyxyz.com"));
Это работает нормально, но мы хотели бы сделать раздел «От» немного более удобным для пользователя.В настоящее время получатель электронного письма увидит адрес «mail@companyxyz.com» в разделе «От» своего почтового ящика.Вместо этого мы бы хотели, чтобы они увидели там «Компанию XYZ».Я полагаю, что это, вероятно, делается с помощью метода addHeader(), но я не уверен, каким будет имя заголовка.
Решение
Хорошо, было бы полезно прочитать документацию обо ВСЕХ задействованных классах.Правильный синтаксис должен быть
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
Другие советы
Если вы хотите сохранить адрес электронной почты + имя в одной строке (проще, чем хранить две строки):
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"));
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);