Java vs SMTP of Yandex

Около полугода назад, было написал на Котлине приложение для Андроида, Последнее отправленное сообщение с таким (или подобным) конфигом было сегодня. Сейчас переписал код на Джаве для десктопов, но он почему-то не работает.

private void test() {
    try {
        String from = "seller@yandex.ru";  
        String to = "client@gmail.com";  

        Properties properties = System.getProperties();
        properties.setProperty("mail.smtp.host", "smtp.yandex.ru");
        properties.setProperty("mail.smtp.port", "465");
        properties.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
        properties.setProperty("mail.smtp.socketFactory.port", "465");
        properties.setProperty("mail.smtp.auth", "true");

        Session session = Session.getInstance(properties,new javax.mail.Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(from,"myPassword");
            }
        });

        session.setDebug(true);
        MimeMessage message = new MimeMessage(session);
        message.setFrom(new InternetAddress(from));
        message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
        message.setSubject("Test Mail from Java Program");
        message.setText("Some Message");
        Transport.send(message); 
        System.out.println("Email Sent successfully....");
    } catch (Exception mex){ mex.printStackTrace(); }
}

Выполнение программы останавливается на строке Transport.send(…), при установленных таймаутах выскакивает соответствующее исключение.

Лог такой:

DEBUG: setDebug: JavaMail version 1.6.2 DEBUG: getProvider() returning
javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle]
DEBUG SMTP: need username and password for authentication DEBUG SMTP:
protocolConnect returning false, host=smtp.yandex.ru, user=Admin,
password= DEBUG SMTP: useEhlo true, useAuth true DEBUG SMTP:
trying to connect to host “smtp.yandex.ru”, port 465, isSSL false

Собственно вопрос: как подключится к СМТП Яндекса?

P.S. можете перенести топик, если считаете, что для него есть более подходящий раздел

ua

Может потому что Яндекс вроде бы заблокирован в вашей стране?

Сегодня вон тоже была жалоба на зависания вроде бы из-за Яндекса: Отображает только шапку с лого + бегущий круг загрузки
И тоже на мобильном ок :clkolshok:


Вообще обычно намного проще и надежнее использовать сервисы (HTTP API) типа Mailgun, особенно если отправлять много и на разные адреса.

Для обхода блокировок я использую OpenVPN, как на дестопе так и на мобильном. Яндекс через браузер работает отлично и СМТП сервер пингуется…
Также пробовал запускать проект на ВПС сервере, который предположительно расположен в РФ - не помогло :frowning:

Там максимум штук пять сообщений в неделю отправляется. И заказчик хочет через Яндекс. И мне уже интересно почему оно не работает.

Когда писал приложение под Андроид, то изначально использовал Гмаил и у меня в Украине все работало, но его система безопасности не позволила подключится с РФ.

1 лайк

Думаю проблема все-таки локальная каким-то образом. :thinking:

У меня этот код не зависает на подключении

DEBUG: setDebug: JavaMail version 1.6.2
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle]
DEBUG SMTP: need username and password for authentication
DEBUG SMTP: protocolConnect returning false, host=smtp.yandex.ru, user=alex, password=<null>
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: trying to connect to host "smtp.yandex.ru", port 465, isSSL false
220 vla5-47b3f4751bc4.qloud-c.yandex.net ESMTP (Want to use Yandex.Mail for your domain? Visit http://pdd.yandex.ru)
DEBUG SMTP: connected to host "smtp.yandex.ru", port: 465
EHLO pop-os.localdomain
250-vla5-47b3f4751bc4.qloud-c.yandex.net
250-8BITMIME
250-PIPELINING
250-SIZE 42991616
250-AUTH LOGIN PLAIN XOAUTH2
250-DSN
250 ENHANCEDSTATUSCODES
DEBUG SMTP: Found extension "8BITMIME", arg ""
DEBUG SMTP: Found extension "PIPELINING", arg ""
DEBUG SMTP: Found extension "SIZE", arg "42991616"
DEBUG SMTP: Found extension "AUTH", arg "LOGIN PLAIN XOAUTH2"
DEBUG SMTP: Found extension "DSN", arg ""
DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg ""
DEBUG SMTP: protocolConnect login, host=smtp.yandex.ru, user=seller@yandex.ru, password=<non-null>
DEBUG SMTP: Attempt to authenticate using mechanisms: LOGIN PLAIN DIGEST-MD5 NTLM XOAUTH2 
DEBUG SMTP: Using mechanism LOGIN
DEBUG SMTP: AUTH LOGIN command trace suppressed
DEBUG SMTP: AUTH LOGIN failed
javax.mail.AuthenticationFailedException: 535 5.7.8 Error: authentication failed: Invalid user or password!
1 лайк

Спасибо!!! Попробую еще раз сделать тест на ВПС.

Проблема решилась сменой JDK.
Еще раз спасибо за помощь, а то я бы еще долго пытался настроить конфигурацию подключения.

1 лайк