Не удалось подключиться к узлу SMTP: 10.0.1.9, порт: 80, ответ: -1 при отправке электронной почты через Java

Я пытаюсь отправить электронное письмо через код Java ... но возникает исключение ... я не знаю, где я ошибаюсь ... отправляю его через сеть моей компании ...

public class SendingMail{
  public static void main(String[] args) {
            final String username = "[email protected]";
    final String password = "********";
    Properties props = new Properties();
    props.put("mail.smtp.user", "[email protected]");
        props.put("mail.smtp.password", "********");
        props.put("mail.smtp.protocol", "smtp");  
        props.put("mail.smtp.host", "10.0.1.9");
        props.put("mail.smtp.port", "80");
        props.put("mail.smtp.starttls.enable","false");
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.socketFactory.port", "80");
        props.put("mail.smtp.socketFactory.class", "");
        props.put("mail.smtp.socketFactory.fallback", "false");
    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("[email protected]"));
        message.setRecipients(Message.RecipientType.TO,
            InternetAddress.parse("[email protected]"));
        message.setSubject("Testing Subject");
        message.setText("Dear Mail Crawler,"
            + "\n\n No spam to my email, please!");
                        Transport.send(message);
                           System.out.println("Done");
                   } catch  (MessagingException mex) {
         mex.printStackTrace();
    }
         }
           }

Трассировка стека исключений:

     javax.mail.MessagingException: Could not connect to SMTP host: 10.0.1.9, port: 80,      response: -1
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1270)
    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.ex.mails.SendingMail.main(SendingMail.java:48)

я проверил в телнете, подключается ли он к моему серверу.. он подключается так же хорошо, как я могу пинговать до 10.0.1.9

изменил номер порта на 25. теперь я получаю следующую ошибку

javax.mail.MessagingException: Could not connect to SMTP host: 10.0.1.9, port: 25;
 nested exception is:
java.net.SocketException: Network is unreachable: 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.ex.mails.SendingMail.main(SendingMail.java:48)
Caused by: java.net.SocketException: Network is unreachable: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:69)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:157)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391)
at java.net.Socket.connect(Socket.java:579)
at java.net.Socket.connect(Socket.java:528)
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)
... 7 more

person user3349997    schedule 28.05.2014    source источник
comment
у вас есть smtp, работающий на порту 80 - это сбивает с толку.   -  person Scary Wombat    schedule 28.05.2014
comment
Вы можете попробовать подключиться к порту 25, правильному порту для SMTP.   -  person    schedule 28.05.2014
comment
да.. проверил в телнете при вводе телнета 10.0.1.9 8080 выдает ошибку при использовании 80 в качестве порта подключается!!   -  person user3349997    schedule 28.05.2014
comment
25 выдает ошибку предположим, что сеть моей компании не позволяет это сделать   -  person user3349997    schedule 28.05.2014
comment
только что проверил с портом 25 в cmd с помощью telnet, он нормально подключается .. извините за это, но когда я меняю номер порта в коде, это дает ошибку @MikeW   -  person user3349997    schedule 28.05.2014
comment
Если starttls включен как false, не устанавливайте свойства mail.smtp.socketFactory.*.   -  person user748316    schedule 28.05.2014
comment
прокомментировал свойства mail.smtp.socketFactory, все та же ошибка @user748316   -  person user3349997    schedule 28.05.2014
comment
большое спасибо за ваш быстрый ответ @MikeW   -  person user3349997    schedule 28.05.2014
comment
Можете ли вы проверить это. Аналогичная проблема решена путем установки этого свойства java.net.preferIPv4Stack=true. Проверьте эту проблему Simualar   -  person ganaraj    schedule 28.05.2014


Ответы (1)


Вот несколько моментов, которые могут быть вам полезны

  1. Проверьте, работает ли SMTP-сервер.
  2. Если SMTP-сервер работает, проверьте, какой порт (может быть 25 587 465) прослушивается SMTP-сервером. 587 для StartTLS props.put("mail.smtp.starttls.enable", "true"); или используйте 465, если ssl включен

Вот пример, который может помочь вам http://www.mkyong.com/java/javamail-api-sending-email-via-gmail-smtp-example/

person Arif Khan    schedule 28.05.2014