2012-07-31 42 views
0

我正在运行带有Postfix服务器的JBoss服务器。当我发送电子邮件时,JavaMail会创建一个无效的messageID,例如消息ID:< 47112553230.139.4972667128159.JavaMail.undefined>。JavaMail无效MSGID

我使用这个代码发送邮件:

Properties props = new Properties(); 
props.put("mail.smtp.host", "xxx.tld"); 
props.put("mail.host", "xxx.tld"); 
InitialContext ictx = new InitialContext(props); 
Session sess = (Session) ictx.lookup("java:jboss/mail/Default"); 
Transport trans = sess.getTransport("smtp"); 
trans.connect(); 

MimeMessage msg = new MimeMessage(sess); 
msg.setFrom(new InternetAddress(from)); 
msg.addRecipients(RecipientType.TO, InternetAddress.parse(to, false)); 
msg.setSubject(subject); 
msg.setText(message); 
msg.setHeader("Content-Type", "text/html; charset=\"utf-8\""); 
msg.saveChanges(); 

Transport.send(msg, msg.getAllRecipients()); 
trans.close(); 

主要后缀配置:

myhostname = xxx.tld 
alias_maps = hash:/etc/aliases 
alias_database = hash:/etc/aliases 
myorigin = /etc/mailname 
mydestination = xxx.tld, Debian-60-squeeze-64-minimal, localhost.localdomain, localhost 
relayhost = 
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 
mailbox_size_limit = 0 
recipient_delimiter = + 
inet_interfaces = 127.0.0.1 

我怎样才能解决这个问题呢?

最好的问候, 基督教

+0

是什么让你觉得消息的ID是无效的? – 2012-07-31 17:29:44

+0

<47112553230.139.4972667128159.JavaMail.undefined>不包含顶级域名。 SpamAssasin用“INVALID_MSGID”标记邮件。 – user1565121 2012-08-01 11:27:14

+0

你说得对,应该至少包含一个“@”。 Message ID中“未定义”的部分来自[InternetAddress.getLocalAddress](http://javamail.kenai.com/nonav/javadocs/javax/mail/internet/InternetAddress.html#getLocalAddress(javax.mail) .Session))方法;阅读javadoc的细节。据我所知,值可以是“未定义”的唯一方法是如果属性“mail.from”设置为“未定义”。如果getLocalAddress返回null,则JavaMail将使用“javamailuser @ localhost”。 – 2012-08-01 18:18:30

回答

1

这是我怎么能修复与@BillShannon的帮助下问题:

Properties props = new Properties(); 
InitialContext ictx = new InitialContext(props); 
Session sess = (Session) ictx.lookup("java:jboss/mail/Default"); 
props = sess.getProperties(); 
props.put("mail.smtp.host", "xxx.tld"); 
props.put("mail.host", "xxx.tld"); 
props.put("mail.from", "[email protected]"); 
sess = Session.getInstance(props); 
+0

您不需要获得新的会话。您所做的属性更改会影响当前会话。 – 2012-09-24 19:30:59

+0

好吧,我测试过它,它的工作原理。我非常感谢你的帮助。 – user1565121 2012-09-28 14:26:35