Definindo o nome do nome em um javax.mail.mimemessage?
-
21-09-2019 - |
Pergunta
Atualmente, nosso aplicativo usa um javax.mail para enviar email, usando javax.mail.mailmessage. Definimos os cabeçalhos do e -mail desta maneira:
Message msg = new MimeMessage(mailSession);
msg.setFrom(new InternetAddress("mail@companyxyz.com"));
Isso funciona muito bem, mas gostaríamos de tornar a seção "da" um pouco mais fácil de usar. Atualmente, alguém que recebe um e -mail verá "Mail@companyxyz.com" na seção "da" da caixa de entrada. Em vez disso, gostaríamos que eles vissem "Companhia XYZ" lá. Eu acho que isso provavelmente é feito com o método addHeader (), mas não tenho certeza de qual seria o nome do cabeçalho.
Solução
OK, ler a documentação sobre todas as aulas envolvidas teria sido útil. A sintaxe correta deve ser
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
Outras dicas
Se você deseja armazenar o email + o nome em uma string (mais fácil do que manter duas string):
Message msg = new MimeMessage(mailSession);
msg.setFrom(new InternetAddress("Company XYZ <mail@companyxyz.com>"));
Caso eu usei texto localizado com caracteres especiais como u00fa, tive problemas com a codificação de alias de endereço de e -mail para alguns clientes POP3 se eu tivesse usado apenas
MimeMessage m = new MimeMessage(session);
m.setFrom();
Pode ser resolvido por endereço de e -mail e alias separados por 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);