Impostazione del nome da un javax.mail.MimeMessage?
-
21-09-2019 - |
Domanda
Attualmente, la nostra applicazione utilizza un javax.mail per inviare e-mail, utilizzando javax.mail.MailMessage. Abbiamo impostato la dalle intestazioni delle email in questo modo:
Message msg = new MimeMessage(mailSession);
msg.setFrom(new InternetAddress("mail@companyxyz.com"));
Questo funziona bene, ma vorremmo fare la sezione di un po 'più user-friendly "Da". Attualmente, chi riceve una e-mail vedrà "mail@companyxyz.com" nella sezione della loro casella di posta "Da". Invece, vorremmo loro di vedere "Società XYZ" lì. Immagino questo è probabilmente fatto con il metodo AddHeader (), ma non sono sicuro di quello che il nome di intestazione sarebbe.
Soluzione
OK, leggere la documentazione di tutte le classi coinvolte sarebbe stato utile. La sintassi corretta dovrebbe essere
Message msg = new MimeMessage(mailSession);
msg.setFrom(new InternetAddress("mail@companyxyz.com", "Company XYZ"));
Fonte: https://javamail.java. net / nonav / docs / api / javax / mail / internet / InternetAddress.html
Altri suggerimenti
Se si desidera memorizzare l'e-mail + il nome in una stringa (più facile che mantenere due stringhe):
Message msg = new MimeMessage(mailSession);
msg.setFrom(new InternetAddress("Company XYZ <mail@companyxyz.com>"));
Nel caso in cui ho usato il testo localizzato con caratteri speciali come \ u00FA Ho avuto problemi con l'indirizzo e-mail codifica alias per alcuni client POP3 se avessi usato solo
MimeMessage m = new MimeMessage(session);
m.setFrom();
Si può essere risolto indirizzo e-mail separato e alias 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);