Мне кажется, что я не могу правильно настроить реализацию SpringMail JavaMail через Spring Boot application.properties
.
Следующий код с использованием стандартного API JavaMail отправляет сообщения электронной почты просто отлично:
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.socketFactory.port", "587");
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", "587");
Session session = Session.getDefaultInstance(props, new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("username", "password");
}
});
try {
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("sender@gmail.com"));
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("recipientaddress@gmail.com"));
message.setSubject("Test Message");
message.setText("This is a test message.");
Transport.send(message);
System.out.println("Sent");
} catch (MessagingException e) {
throw new RuntimeException(e);
}
Приложение My Spring Boot application.properties
содержит следующие свойства, относящиеся к доставке электронной почты:
spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.properties.mail.smtp.auth=true
spring.mail.username=username
spring.mail.password=password
spring.mail.properties.mail.transport.protocol=smtp
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
spring.mail.properties.mail.smtp.connectiontimeout=5000
spring.mail.properties.mail.smtp.timeout=3000
spring.mail.properties.mail.smtp.writetimeout=5000
Следующий код в приложении Spring Boot не отправляет сообщения электронной почты, но также не выдает никаких исключений:
@Autowired
private JavaMailSender emailSender;
@RequestMapping("/sendEmail")
public ResponseEntity<Void> sendEmail(HttpServletRequest httpRequest) {
try {
MimeMessage message = emailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message);
helper.setFrom("sender@gmail.com");
helper.setTo("recipientaddress@gmail.com");
helper.setText("This is a test message.");
helper.setSubject("Test Message");
emailSender.send(message);
System.out.println("Sent");
}
catch (MessagingException me) {
logger.error("Failed to send email: {}", me.getMessage());
}
return new ResponseEntity<Void>(null, HttpStatus.OK);
}