1

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

请注意,我使用的是 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 总是:

From: email@domain.com

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

我试过添加

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

但这没有任何区别。

有人对这个错误有任何经验吗?

谢谢。

4

2 回答 2

2

多么痛苦。

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

改变它解决了它。

于 2013-05-01T21:57:49.997 回答
1

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

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

message.setFrom(new InternetAddress(sender));
于 2016-08-29T12:54:45.910 回答