Отправка электронной почты с использованием Javamail - PullRequest
0 голосов
/ 01 сентября 2011

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

Could not connect to SMTP host: smtpout.asia.secureserver.net, port: 80, response: -1

Я пробовал порты 3535, 465, 587, 25, но все равно получаю ту же ошибку.Тот же код, приведенный ниже, был протестирован для работы с отправкой электронной почты с помощью Gmail, с добавлением этого кода (который я опускал в данном случае):

props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");

MailSender.java:

   public class MailSender {

        private static String HOST = "smtpout.asia.secureserver.net";
        private static String PORT = "80";

        public static void sendMail(final Mail mail) throws MailException {

            EmailValidator validtor = new EmailValidator();

            if (validtor.validate(mail.getReceipient())) {
                Properties props = new Properties();
                props.put("mail.smtp.host", HOST);
                props.put("mail.smtp.socketFactory.port", PORT);           
                props.put("mail.smtp.auth", "true");
                props.put("mail.smtp.port", PORT);

                Session session = Session.getDefaultInstance(props,
                        new javax.mail.Authenticator() {
                            protected PasswordAuthentication getPasswordAuthentication() {
                                return new PasswordAuthentication(mail.getUsername(),mail.getPassword());
                            }
                        });

                try {
                    Message message = new MimeMessage(session);
                    message.setFrom(new InternetAddress(mail.getSender()));
                    message.setRecipients(Message.RecipientType.TO,
                            InternetAddress.parse(mail.getReceipient()));
                    message.setSubject(mail.getSubject());           
                    message.setText(mail.getBody());
                    Transport.send(message);
                    System.out.println("OK");

                } catch (MessagingException e) {
                    throw new MailException(e.getMessage());
                }           
            } else {
                throw new MailException("Email address not valid.");
            }       
        }
    }

Параметр Mail в этом классе содержит всю другую почтовую информацию, строку имени пользователя / пароля, адреса электронной почты отправителя и получателя, которая протестирована для работы с почтовыми клиентами, такими как Outlook и Thunderbird.

Ответы [ 2 ]

2 голосов
/ 01 сентября 2011

Порт 80 используется для HTTP.

Измените его на 465 или 587.

(обратитесь к документации GoDaddy для правильного порта)

0 голосов
/ 11 сентября 2011

Видимо, проблема была не в Java mail api, а в сервере GoDaddy, я проконсультировался с их техподдержкой и теперь отлично работает.

...