Столкнулся с тем, что не могу отправить электронное сообщение. Я не могу понять причину. Я использую 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"
@Gus, я могу создать сообщение электронной почты из своего старого проекта без весны. В старом проекте не проблема...
Получите заводские настройки сокета и опубликуйте Вывод отладки JavaMail.
Попробуйте этот код:
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();
}
Объяснение того, ПОЧЕМУ это решило бы проблему, сделало бы совершенно очевидным, что на самом деле это НЕ решает проблему.
Попробуйте добавить
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
Убедитесь, что вы действительно можете отправить SMTP-сообщение на этот почтовый сервер с любой машины, на которой вы его запускаете. Из-за проблем со спамерами большинство почтовых серверов больше не будут принимать почту из любого старого источника. Если вы можете получить доступ к журналу почтового сервера, вы также можете получить больше подсказок.