Java mail не удается подключиться к порту

#java #email #port

#java #Адрес электронной почты #порт

Вопрос:

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

         Properties props = new Properties();
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.smtp.host", "smtp.gmail.com");
        props.put("mail.smtp.port", "587"); 
        // tried props.put("mail.smtp.port", "25");
        //props.put("mail.smtp.port", "8889"); For my personal host setting   
        props.put("mail.smtp.timout", "10000");
  

Проблема в том, что я продолжаю получать Could not connect to port error , поэтому, если интернет-провайдер блокирует все порты, есть ли какой-либо возможный способ отправки электронных писем или на всякий случай, может быть, что-то не так с моим подходом. (это работает с некоторыми интернет-провайдерами, но не с тем, на котором мне нужно запустить код)

Комментарии:

1. Вы пробовали 465 с ssl?

2. @JorgeCampos: да, все еще ошибка порта

3. Обратитесь к вашему текущему провайдеру. Я не верю, что это может быть проблемой программирования, если код работает в другом месте.

4. Вы пробовали использовать telnet, чтобы проверить, нет ли у вас проблем с брандмауэром?

Ответ №1:

Попробуйте это, если это поможет (для Gmail).

Некоторые из приведенных ниже строк могут не потребоваться, но я не тестировал каждую строку, просто использовал эти пары ключ-значение и работал нормально.

 Properties props = new Properties();
    props.put("mail.smtp.user", senderEmailAddress);
    props.put("mail.smtp.host", "smtp.gmail.com");
    props.put("mail.smtp.port", "465");
    props.put("mail.smtp.starttls.enable","true");
    props.put("mail.smtp.auth", "true");
    props.put("mail.smtp.socketFactory.port", port_port);
    props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
    props.put("mail.smtp.socketFactory.fallback", "false");

    //SecurityManager security = System.getSecurityManager();
  

Для моей локальной электронной почты я использовал этот (не SSL)

 System.setProperty("sun.security.ssl.allowUnsafeRenegotiation","true");
    Properties props = new Properties();
    props.put("mail.smtp.user", senderEmailAddress);
    props.put("mail.smtp.host", host_name); //for me : mail.mydomain.com
    props.put("mail.smtp.port", smtp_port); //mine is "25"
    props.put("mail.transport.protocol", "smtp");
    props.setProperty("mail.smtp.quitwait", "false");
    props.put("mail.smtp.auth", "true");
    //props.put("mail.smtp.starttls.enable","true");        
    //props.put("mail.smtp.socketFactory.port", smtp_port);
    //props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
    //props.put("mail.smtp.socketFactory.fallback", "false");

//SecurityManager security = System.getSecurityManager();