Définition de l'un nom dans javax.mail.MimeMessage?
-
21-09-2019 - |
Question
À l'heure actuelle, notre application utilise un javax.mail pour envoyer des e-mail, en utilisant javax.mail.MailMessage. Nous avons mis les en-têtes de De l'e-mail ainsi:
Message msg = new MimeMessage(mailSession);
msg.setFrom(new InternetAddress("mail@companyxyz.com"));
Cela fonctionne très bien, mais nous aimerions faire le « De » section un peu plus convivial. À l'heure actuelle, une personne qui reçoit un e-mail verra « mail@companyxyz.com » dans la section « From » de leur boîte de réception. Au lieu de cela, nous aimerions qu'ils voir « Société XYZ » là-bas. Je figure cela est probablement fait avec la méthode addHeader (), mais je ne suis pas sûr de ce que le nom d'en-tête serait.
La solution
OK, la lecture de la documentation sur toutes les classes concernées aurait été utile. La syntaxe correcte doit être
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
Autres conseils
Si vous souhaitez enregistrer l'e-mail + le nom dans une chaîne (plus facile que de garder deux cordes):
Message msg = new MimeMessage(mailSession);
msg.setFrom(new InternetAddress("Company XYZ <mail@companyxyz.com>"));
Dans le cas où je le texte localisé avec des caractères spéciaux comme \ u00FA j'ai eu des problèmes avec l'alias d'adresse e-mail de codage pour certains clients pop3 si je l'avais utilisé juste
MimeMessage m = new MimeMessage(session);
m.setFrom();
Il peut être résolu par adresse e-mail séparé et alias par 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);