Вам не нужно расширять класс, который содержит конфигурацию для писем. Вы просто создаете в нем метод и комментируете его с помощью @Bean
, а затем Spring внедрит свой экземпляр везде, где он вызывается, с помощью @Autowired
.
добавить это в зависимости в pom.xml (если еще нет):
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
<version>2.0.4.RELEASE</version>
</dependency>
Если вы используете gradle, добавьте это в build.gradle
compile group: 'org.springframework.boot', name: 'spring-boot-starter-mail', version: '2.0.4.RELEASE'
Это та конфигурация, которая вам нужна. Вы добавляете этот компонент в класс с аннотацией @Configuration
:
@Bean
public JavaMailSender getJavaMailSender() {
JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
mailSender.setHost("smtp.gmail.com");
mailSender.setPort(587);
mailSender.setUsername("my.gmail@gmail.com");
mailSender.setPassword("password");
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");
return mailSender;
}
Затем, чтобы отправлять электронные письма, вы должны внедрить JavaMailSender
в класс, помеченный @Component
(@Service
, @Controller
и @Repository
все являются компонентами), и начать отправлять электронные письма:
@Autowired
public JavaMailSender emailSender;
public void sendSimpleMessage(
String to, String subject, String text) {
SimpleMailMessage message = new SimpleMailMessage();
message.setTo(to);
message.setSubject(subject);
message.setText(text);
emailSender.send(message);
}