#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();