br.eti.danielcamargo.backend.common.core.business.MailService.java Source code

Java tutorial

Introduction

Here is the source code for br.eti.danielcamargo.backend.common.core.business.MailService.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package br.eti.danielcamargo.backend.common.core.business;

import java.io.StringWriter;
import java.util.HashMap;
import java.util.Map;

import javax.mail.internet.MimeMessage;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;

import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.mail.MessagingException;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.mail.MailException;
import org.springframework.stereotype.Service;

@Service
public class MailService {

    static final Logger _log = Logger.getLogger(MailService.class.getSimpleName());

    @Autowired
    @Qualifier("mailSender")
    private JavaMailSender mailSender;

    @Autowired
    private Configuration freemarkerMailConfiguration;

    public void enviarEmail(String baseTemplatePath, String template, Map<String, Object> params,
            final String subject, final String... to) {
        try {
            StringBuilder textBuilder = new StringBuilder();
            Template temp = freemarkerMailConfiguration.getTemplate(baseTemplatePath + "/cabecalho-email.html");
            StringWriter str = new StringWriter();
            temp.process(params, str);
            final String cabecalho = str.toString();
            textBuilder.append(cabecalho);

            //para montar o email
            template = baseTemplatePath + "/" + template;
            temp = freemarkerMailConfiguration.getTemplate(template);
            str = new StringWriter();
            temp.process(params, str);
            String text = str.toString();
            textBuilder.append(text);

            temp = freemarkerMailConfiguration.getTemplate(baseTemplatePath + "/rodape-email.html");
            str = new StringWriter();
            // parametros rodapeh

            Map<String, Object> paramsRodape = new HashMap<>();
            temp.process(paramsRodape, str);
            text = str.toString();
            textBuilder.append(text);

            // enviar msg
            MimeMessage mimeMessage = mailSender.createMimeMessage();
            MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
            helper.setSubject(subject);
            helper.setFrom("danielsudpr@gmail.com");
            helper.setText(textBuilder.toString(), true);
            //helper.addInline("logo", new ClassPathResource("/hsnpts/logo.png"));
            helper.setTo(to);

            boolean disabled = true;

            if (disabled) {
                _log.log(Level.INFO, textBuilder.toString());
                return;
            }

            mailSender.send(mimeMessage);

        } catch (TemplateException | IOException | MessagingException | MailException e) {
            throw new RuntimeException(e);
        }
    }
}