Почему я не могу отправить сообщение электронной почты?

Столкнулся с тем, что не могу отправить электронное сообщение. Я не могу понять причину. Я использую Spting Boot 2. В примере используется класс JavaMailSender. Но можно ли обойтись без его реализации и указания необходимых параметров в application.properties?

@Configuration
public class MainConfiguration {

    @Bean
    public JavaMailSender getJavaMailSender() {
        JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
        mailSender.setHost("smtp.yandex.ru");
        mailSender.setPort(465);

        mailSender.setUsername("[email protected]");
        mailSender.setPassword("test122223");

        Properties props = mailSender.getJavaMailProperties();
        props.put("mail.transport.protocol", "smtp");
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.debug", "true");
        props.put("mail.smtp.socketFactory.port", "465");
        props.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");
        //props.put("mail.smtp.timeout", 1000);

        return mailSender;
    }

    @Bean
    public SimpleMailMessage templateSimpleMessage() {
        SimpleMailMessage message = new SimpleMailMessage();
        message.setText("This is the test email template for your email:");
        return message;
    }

}

И через 2 минуты у меня ошибка: "javax.mail.MessagingException: Could not connect to SMTP host"

Убедитесь, что вы действительно можете отправить SMTP-сообщение на этот почтовый сервер с любой машины, на которой вы его запускаете. Из-за проблем со спамерами большинство почтовых серверов больше не будут принимать почту из любого старого источника. Если вы можете получить доступ к журналу почтового сервера, вы также можете получить больше подсказок.

Gus 12.07.2019 16:45

@Gus, я могу создать сообщение электронной почты из своего старого проекта без весны. В старом проекте не проблема...

Алексей Земцов 12.07.2019 16:50

Получите заводские настройки сокета и опубликуйте Вывод отладки JavaMail.

Bill Shannon 12.07.2019 23:06
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
3
677
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Попробуйте этот код:

Intent i = new Intent(Intent.ACTION_SEND);
   i.setType("message/rfc822");
   i.putExtra(Intent.EXTRA_EMAIL  , new String[]{"[email protected]"});
   i.putExtra(Intent.EXTRA_SUBJECT, "subject of email");
   i.putExtra(Intent.EXTRA_TEXT   , "body of email");
try{
     startActivity(Intent.createChooser(i, "Send mail..."));
   }
catch (android.content.ActivityNotFoundException ex) {
     Toast.makeText(MyActivity.this, "There are no email clients installed.", 
     Toast.LENGTH_SHORT).show();
   }

Объяснение того, ПОЧЕМУ это решило бы проблему, сделало бы совершенно очевидным, что на самом деле это НЕ решает проблему.

Dan Rayson 12.07.2019 16:59
Ответ принят как подходящий

Попробуйте добавить

spring.mail.properties.mail.smtp.ssl.enable=true

или

props.put("mail.smtp.ssl.enable", "true");

Я не понял, почему вы используете класс конфигурации, если вы используете весеннюю загрузку 2, вы можете просто поместить всю конфигурацию электронной почты в свой файл application.properties:

spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.ssl.enable=true
spring.mail.host=smtp.yandex.ru
spring.mail.port=465
[email protected]
spring.mail.password=test122223

Другие вопросы по теме