javax.mail.MessagingException:无法连接到 SMTP 主机:172.16.100.185,端口:25;
javax.mail.MessagingException: Could not connect to SMTP host: 172.16.100.185, port: 25;
我编写了一个简单的程序来使用 Java API 发送电子邮件。下面是代码。接下来是我收到的错误消息。
String host = "172.16.100.185";
final String user = "anand.rajendran@*****.net";
String to = "anand.rajendran@*****.net";
// Get the session object
Properties props = new Properties();
props.put("mail.smtp.host", host);
//props.put("mail.smtp.port", "587");
Session session = Session.getDefaultInstance(props,null);
// Compose the message
try {
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(user));
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
message.setSubject("My subject");
message.setText("This is simple program of sending email using JavaMail API");
// send the message
Transport.send(message);
} catch (MessagingException e) {
e.printStackTrace();
}
错误:
javax.mail.MessagingException: Could not connect to SMTP host: 172.16.100.185, port: 25;
nested exception is:
java.net.SocketException: Permission denied: connect
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1282)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:370)
at javax.mail.Service.connect(Service.java:275)
at javax.mail.Service.connect(Service.java:156)
at javax.mail.Service.connect(Service.java:105)
at javax.mail.Transport.send0(Transport.java:168)
at javax.mail.Transport.send(Transport.java:98)
at com.photon.bigdata.heartbeat.service.impl.HeartBeatServiceImpl.sendFailureReportEmail(HeartBeatServiceImpl.java:167)
at com.photon.bigdata.heartbeat.controller.HeartBeatController.sendReport(HeartBeatController.java:62)
at com.photon.bigdata.heartbeat.controller.HeartBeatController.main(HeartBeatController.java:33)
Caused by: java.net.SocketException: Permission denied: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:232)
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:189)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1250)
... 9 more
仅供参考,我也尝试了以下方法。
1) 我尝试使用端口号:25、465 和 587。
props.put("mail.smtp.port", "465");
props.put("mail.smtp.port", "587");
2) 检查主机中的 sendMail 状态
[root@stormcluster1 ~]# service sendmail status
sendmail (pid 13898) is running...
sm-client (pid 13910) is running...
3) 在主机中,我检查了 SMTP 服务器是否正在侦听端口 25
[root@stormcluster1 ~]# lsof -i :25
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sendmail 13898 root 4u IPv4 2172898 0t0 TCP localhost:smtp (LISTEN)
4) 能够从 Linux 终端发送电子邮件
我成功地使用以下命令从 SMPT 服务器已启动的 linux 邮箱和 运行 向我的电子邮件地址发送了一封电子邮件。
邮件-s "from 44 with sudo access" anand.rajendran@*****.net
发现一些参考资料表明这是 Java-7 相关的:
JavaMail API to iMail -- java.net.SocketException: Permission denied: connect
https://confluence.atlassian.com/display/STASHKB/Mail+Server+Connection+Failed+With+'java.net.SocketException%3A+Permission+denied%3A+connect.'+异常
这些页面提供了解决方法。
问题出在安装的 SMPT 服务器的配置文件上。我将我的 java 应用程序指向另一台机器,其中另一个 SMTP 服务器是 运行。它运作良好。 :)
感谢大家的时间和努力!干杯
我编写了一个简单的程序来使用 Java API 发送电子邮件。下面是代码。接下来是我收到的错误消息。
String host = "172.16.100.185";
final String user = "anand.rajendran@*****.net";
String to = "anand.rajendran@*****.net";
// Get the session object
Properties props = new Properties();
props.put("mail.smtp.host", host);
//props.put("mail.smtp.port", "587");
Session session = Session.getDefaultInstance(props,null);
// Compose the message
try {
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(user));
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
message.setSubject("My subject");
message.setText("This is simple program of sending email using JavaMail API");
// send the message
Transport.send(message);
} catch (MessagingException e) {
e.printStackTrace();
}
错误:
javax.mail.MessagingException: Could not connect to SMTP host: 172.16.100.185, port: 25;
nested exception is:
java.net.SocketException: Permission denied: connect
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1282)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:370)
at javax.mail.Service.connect(Service.java:275)
at javax.mail.Service.connect(Service.java:156)
at javax.mail.Service.connect(Service.java:105)
at javax.mail.Transport.send0(Transport.java:168)
at javax.mail.Transport.send(Transport.java:98)
at com.photon.bigdata.heartbeat.service.impl.HeartBeatServiceImpl.sendFailureReportEmail(HeartBeatServiceImpl.java:167)
at com.photon.bigdata.heartbeat.controller.HeartBeatController.sendReport(HeartBeatController.java:62)
at com.photon.bigdata.heartbeat.controller.HeartBeatController.main(HeartBeatController.java:33)
Caused by: java.net.SocketException: Permission denied: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:232)
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:189)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1250)
... 9 more
仅供参考,我也尝试了以下方法。
1) 我尝试使用端口号:25、465 和 587。
props.put("mail.smtp.port", "465");
props.put("mail.smtp.port", "587");
2) 检查主机中的 sendMail 状态
[root@stormcluster1 ~]# service sendmail status
sendmail (pid 13898) is running...
sm-client (pid 13910) is running...
3) 在主机中,我检查了 SMTP 服务器是否正在侦听端口 25
[root@stormcluster1 ~]# lsof -i :25
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sendmail 13898 root 4u IPv4 2172898 0t0 TCP localhost:smtp (LISTEN)
4) 能够从 Linux 终端发送电子邮件
我成功地使用以下命令从 SMPT 服务器已启动的 linux 邮箱和 运行 向我的电子邮件地址发送了一封电子邮件。 邮件-s "from 44 with sudo access" anand.rajendran@*****.net
发现一些参考资料表明这是 Java-7 相关的:
JavaMail API to iMail -- java.net.SocketException: Permission denied: connect
https://confluence.atlassian.com/display/STASHKB/Mail+Server+Connection+Failed+With+'java.net.SocketException%3A+Permission+denied%3A+connect.'+异常
这些页面提供了解决方法。
问题出在安装的 SMPT 服务器的配置文件上。我将我的 java 应用程序指向另一台机器,其中另一个 SMTP 服务器是 运行。它运作良好。 :) 感谢大家的时间和努力!干杯