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

问题描述:

无论我尝试什么,我都无法让发件人名称显示在通过javax.mail Session类发送的传出邮件中。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("[email protected]", 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 protected]> 

但是从总:

From: [email protected] 

因此,邮件客户端如Outlook和Gmail不拔毛出了名。

我已经尝试添加

props.put("mail.smtp.from", "Full Name <[email protected]>") 

但是这并没有什么差别。

任何人都有这个bug的经验?

谢谢。

+0

显示完整自立的例子。 – 2013-05-01 20:49:05

+0

你用什么SMTP服务器?它支持“个人名字”吗? – 2013-05-01 20:53:11

+0

我可以通过命令行发送,所以服务器支持它。问题出在javax库的某处。 – Scott 2013-05-01 20:58:47

真是痛苦。

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

改变,解决了它。

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

// sender the email string example [email protected] 

message.setFrom(new InternetAddress(sender));