javax.mail不包括电子邮件中的发件人姓名

时间:2013-05-01 20:47:20

标签: java smtp javax.mail mail-sender

无论我尝试什么,我都无法将发件人名称显示在通过javax.mail会话类发送的外发邮件中。

请注意我使用的是Rhino,所以这里有javascript和java的混合,但纯java中也存在代码问题。

var _java = JavaImporter(javax.mail, javax.mail.internet, java.util);

        var props = new _java.Properties();
        props.put("mail.smtp.host", myHost);
        props.put("mail.smtp.port", "465");
        props.put("mail.smtp.user", myUserName);
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.socketFactory.port", 465);
        props.put("mail.smtp.socketFactory.class",
                  "javax.net.ssl.SSLSocketFactory");
        props.put("mail.smtp.socketFactory.fallback", "false");
        props.put("mail.smtp.ssl", "true");

        var session = _java.Session.getInstance(props);

        var message = _java.MimeMessage(session);
        message.setSender(
            new _java.InternetAddress("myEmailAddress", "My Full Name")
        );
        message.setRecipients(
            _java.Message.RecipientType.TO,
            [new _java.InternetAddress("anyAddress@anydomain.com", true)]
        );
        message.setText("Testing");
        message.setSubject("Test");
        message.setSentDate(new Date());
        var t = session.getTransport("smtp");
        t.connect(myUserName, myPassword);
        t.sendMessage(message, message.getAllRecipients());

通过电子邮件发送:

Sender: Personal Name <email@domain.com>

但始终是:

From: email@domain.com

因此,像Outlook和Gmail这样的邮件客户端并没有提取名称。

我尝试过添加

props.put("mail.smtp.from", "Full Name <email@domain.com>")

但这没有任何区别。

有人对此错误有任何经验吗?

感谢。

2 个答案:

答案 0 :(得分:2)

多么痛苦。

错误是我使用的是message.setSender而不是message.setFrom。

改变它解决了它。

答案 1 :(得分:1)

我想清除它,因为我有同样的问题

// sender the email string example test@test.com

message.setFrom(new InternetAddress(sender));