-->

从名称在javax.mail.MimeMessage设置?(Setting the from nam

2019-08-18 01:55发布

目前,我们的应用程序使用javax.mail发送电子邮件,使用javax.mail.MailMessage。 我们设置了从电子邮件这样的标题:

Message msg = new MimeMessage(mailSession);
msg.setFrom(new InternetAddress("mail@companyxyz.com"));

这只是正常的,但我们想使“从”部分更人性化一点。 目前,有人收到一封电子邮件,会看到“mail@companyxyz.com”,在“从”收件箱的部分。 相反,我们希望他们看到“XYZ公司”出现。 我想这可能是随的addHeader()方法来实现,但我不知道头名称会是什么。

Answer 1:

OK,阅读文档,所有参与将是有益的类。 正确的语法应为

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



Answer 2:

如果你想存储的电子邮件+名称在一个字符串(更容易比保持两个String):

Message msg = new MimeMessage(mailSession);
msg.setFrom(new InternetAddress("Company XYZ <mail@companyxyz.com>"));


Answer 3:

在情况下,当我用本地化的特殊字符,如\ 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"));

REF: https://javamail.java.net/nonav/docs/api/javax/mail/internet/InternetAddress.html#InternetAddress(java.lang.String,%20java.lang.String,%20java.lang.String)



Answer 4:

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);


文章来源: Setting the from name in a javax.mail.MimeMessage?