Реализовать сервис Spring Boot для электронной почты - PullRequest
0 голосов
/ 31 августа 2018

Я хочу создать загрузочный сервис Spring, который будет использоваться в приложении:

Основной класс с конфигурацией сервера SNMTP:

public class MailConfiguration {

    public MailConfiguration() {
        // TODO add configuration for SNMP server
    }
}

Классы с определенным телом в каждом случае:

public class NewUserNotifier extends MailConfiguration{

    public void sendNewUserNotifier() {
        // TODO Implement here logic
    }
}

public class TransactionLimitsNotifier extends MailConfiguration {

    public void sendTransactionLimitsNotifier() {
        // TODO Implement here logic
    }
}

Как я могу реализовать сервис Spring, который я могу вызывать с помощью @Autowire, когда мне нужен один основной класс, с которым мне нужно для конфигурации?

1 Ответ

0 голосов
/ 31 августа 2018

Вам не нужно расширять класс, который содержит конфигурацию для писем. Вы просто создаете в нем метод и комментируете его с помощью @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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...