我使用java mail api创建了自动电子邮件报告,需要在批处理文件运行后每天触发。虽然它在大多数情况下都能正常工作,但有时会出现异常javax.mail.MessagingException:无法连接到SMTP host:我的主机名,端口:25;嵌套异常是:java.net.ConnectException:连接被拒绝。这不是由于身份验证问题,因为我在发送电子邮件时使用相同的凭据。
我不确定为什么java mail api会间歇性地失败。我可以得到一些调试问题的建议吗?
我正在使用以下代码段 -
String to = "xyz@gmail.com";//change accordingly
String from = "abc@mydomain.com";//change accordingly
final String username = "abc";//change accordingly
final String password = "*****";//change accordingly
String host = "My SMTP server";
Properties props = new Properties();
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.host", host);
props.put("mail.smtp.port", "25");
// Get the Session object.
Session session = Session.getInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
try {
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
message.setRecipients(Message.RecipientType.TO,
InternetAddress.parse(to));
message.setSubject("Testing Subject");
message.setText("message to stakeholders");
Transport.send(message);
}
答案 0 :(得分:1)
检查邮件服务器上的日志以查看可能的拒绝原因是个好主意 - 特别是因为您知道什么时候失败尝试。
答案 1 :(得分:1)
如果JavaMail无法“有时”连接“拒绝连接”,则可能性为:
检查服务器配置和日志文件。如果服务器上没有任何内容表明它拒绝连接,请检查客户端。