错误的主机发送SMTP

时间:2017-03-07 16:00:51

标签: java javamail

我正在尝试使用javax.mail发送邮件。这是我的代码:

Properties props = new Properties();        
props.setProperty("mail.smtp.host", host);
props.setProperty("mail.smtp.port", port);
props.setProperty("mail.user", user);
props.setProperty("mail.password", password);   

Session session = Session.getDefaultInstance(props);

但是我收到了这个错误:

javax.mail.MessagingException: Could not connect to SMTP host: smtp.wrong.server.com, port: 25;

有趣的是,“smtp.wrong.server.com”并不是我作为主持人传递的价值。

就像Session.getDefaultInstance(props)正在使用错误的主机名返回已创建的会话。

我的EAR中没有任何其他地方使用javax.mail(至少不在我的代码中,可能在第三方依赖内?)。

此行为仅在PRO环境中发生。在DEV和TEST环境中部署的相同EAR工作正常。

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:1)

问题在于Session.getDefaultInstance。我应该使用Session.getInstance

来自javadoc:

<强> getDefaultInstance

(...)默认会话可能对同一Java虚拟机中执行的所有代码可用(...)后续调用返回第一次调用创建的Session对象,并忽略传递的Properties对象。每次调用方法时,使用getInstance方法获取新的Session对象。

答案 1 :(得分:0)

它接缝你没有使用正确的钥匙为您的proerties。请参阅javax.mail.Session

的Javadoc
  

预计客户提供属性的值   列在JavaMail规范的附录A中(特别是   mail.store.protocol,mail.transport.protocol,mail.host,mail.user,   和mail.from)因为默认值不太可能在所有情况下都有效。