【问题标题】:javax.mail.MessagingException: Could not connect to SMTP host: 172.16.100.185, port: 25;javax.mail.MessagingException:无法连接到 SMTP 主机:172.16.100.185,端口:25;
【发布时间】:2016-02-18 21:48:09
【问题描述】:

我编写了一个使用 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 框向我的电子邮件地址发送电子邮件。 mail -s "来自 44 的 sudo 访问" anand.rajendran@*****.net

【问题讨论】:

  • “权限被拒绝”表示运行 java 代码的机器上的防火墙阻止您的程序建立网络连接。你是在 Windows 上运行的吗?
  • 是的,我在 windows 8.1 pro 上运行 java 代码。
  • @GK27:我已经尝试过这个选项,但也没有用。
  • Okies,但我没有看到任何类似的代码:)

标签: java email jakarta-mail sendmail


【解决方案1】:

问题在于安装的 SMPT 服务器的配置文件。我将我的 java 应用程序指向另一台正在运行另一个 SMTP 服务器的机器。它工作得很好。 :) 感谢大家的时间和精力!!干杯

【讨论】:

    【解决方案2】:

    发现一些参考资料表明这是与 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.'+Exception

    这些页面提供了解决方法。

    【讨论】:

      猜你喜欢
      • 2016-07-29
      • 2014-10-23
      • 2011-11-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-02
      • 1970-01-01
      • 1970-01-01
      • 2014-03-08
      相关资源
      最近更新 更多