ItemWritter - Envio de email

Qual a ideia do ItemWritter? Queremos que ele envie um email solicitando o retorno dos livros para o User.

Portanto, se chamará: sendEmailRequestReturnWritterConfig.

Vamos criar o nosso método sendEmailRequestReturnWritterConfig, que retornará um ItemWriter<Mail>.

Precisamos criar um método para realizar o envio de email, clique aqui

Este método ficará dentro da classe do Writter, depois do método que criamos do Bean.

Variável de ambiente

Logue no sendGrid, obtenha o valor da chave e coloque como variável de ambiente na IDE (não é no app.properties), e sim na variável de ambiente.

spring.sendgrid.api-key=KEY_SENDGRID

Com isso, ao rodar a aplicação, o email será enviado.

@Configuration 
public class sendUserRequestReturnWriterConfig {
    private static Logger LOG = LoggerFactory.getLogger(sendUserRequestReturnWriterConfig.class);

    @Autowired
    private SendGrid sendGrid;

    @Bean
    public ItemWriter<Mail> sendUserRequestReturnWriter() {
        return items -> items.forEach(this::sendEmail);
    }

    private void sendEmail(Mail email) {
        LOG.info("Sending mail");
        Request request = new Request();
        try {
            request.setMethod(Method.POST);
            request.setEndpoint("mail/send");
            request.setBody(email.build());
            LOG.info("[WRITER STEP] Send email to: " + email.build());
            Response response = sendGrid.api(request);
            if (response.getStatusCode() >= 400 && response.getStatusCode() <= 500) {
                LOG.error("Error sending email: " + response.getBody());
                throw new Exception(response.getBody());
            }
            LOG.info("Email sent! Status = " + response.getStatusCode());
        } catch (Exception e) {
            e.getMessage();
        }
    }
}

Atualizado