Создание задания электронной почты путем чтения данных из базы данных и отправки писем всем получателям с помощью Spring Boot Batch Email Thymeleaf - PullRequest
0 голосов
/ 16 апреля 2020

Rest API для вызова почтовой службы

 @GetMapping(value = "/sendMail/{id}")
public User sendMailToUser(@PathVariable final Integer id){
    logger.info("In Mail Sending");

    User user = userRepository.findById(id).orElseThrow(()-> new ResourceNotFoundException("User", "id", id));

    System.out.println("Printing current user :: " + user.toString());

    Mail mail = new Mail();

    mail.setFrom("scsunil24@gmail.com");
    mail.setMailTo(user.getEmail());
    mail.setSubject("Email with Spring boot and thymeleaf template!");

    Map<String, Object> objectMap = new HashMap<>();

    objectMap.put("name", user.getName());
    objectMap.put("sign", user.getPassword());
    objectMap.put("location", user.getAddress().getCountry());

    mail.setProps(objectMap);

    emailService.sendEmail(mail);

    logger.info("Send mail completed");

    return user;
}

Класс обслуживания электронной почты

@Service

publi c class EmailService {

@Autowired
private JavaMailSender javaMailSender;

@Autowired
private SpringTemplateEngine springTemplateEngine;

@Async
public void sendEmail(Mail mail){
    final MimeMessage mimeMessage = javaMailSender.createMimeMessage();

    try {
        MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage,
                MimeMessageHelper.MULTIPART_MODE_MIXED_RELATED, StandardCharsets.UTF_8.name());

        Context context = new Context();
        context.setVariables(mail.getProps());

        final String processHtmlTemplate = springTemplateEngine.process("mail", context);

        messageHelper.setTo(mail.getMailTo());
        messageHelper.setText(processHtmlTemplate,true);
        messageHelper.setSubject(mail.getSubject());
        messageHelper.setFrom(mail.getFrom());

        javaMailSender.send(mimeMessage);

    } catch (MessagingException e) {
        e.printStackTrace();
    }
}

}

Конфигурация Thymeleaf

@ Конфигурация publi c class ThymeleafTemplateConfig {

@Bean
public SpringTemplateEngine springTemplateEngine(){
    SpringTemplateEngine springTemplateEngine = new SpringTemplateEngine();
    springTemplateEngine.addTemplateResolver(htmlTemplateResolver());

    return springTemplateEngine;
}

@Bean
public ITemplateResolver htmlTemplateResolver() {

    final ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();
    templateResolver.setPrefix("/templates/html/");
    templateResolver.setSuffix(".html");
    templateResolver.setTemplateMode(TemplateMode.HTML);
    templateResolver.setCharacterEncoding("UTF-8");
    templateResolver.setCheckExistence(true);
    templateResolver.setCacheable(false);

    return templateResolver;
}

}

** Нужна помощь в создании задания, которое при вызове будет отправлять электронные письма всем получателям, присутствующим в базе данных. Пожалуйста, поделитесь только рабочим кодом **

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...