package com.firstdata.tokenextractor.batch.processor;
import java.io.StringWriter; import java.util.ArrayList;
import javax.mail.internet.MimeMessage;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.apache.velocity.VelocityContext; import org.apache.velocity.app.VelocityEngine; import org.apache.velocity.runtime.RuntimeConstants; import org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader; import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.scope.context.ChunkContext; import org.springframework.batch.repeat.RepeatStatus; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.env.Environment; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.stereotype.Component;
import com.firstdata.tokenextractor.TokenExtractorBatchJob; @SuppressWarnings("unused") @Component public class EmailSender {
@Autowired
private JavaMailSender mailSender;
@Autowired
private Environment env;
private static Logger logger = LogManager.getLogger(EmailSender.class);
public void sendEmail(String messageToBeSent ) throws Exception {
logger.info("Going to send email notification");
String mailTo = env.getProperty("mailTo");
String mailFrom = env.getProperty("mailFrom");
logger.debug("Recipient list: " + mailTo);
logger.debug("Mail Sender: " + mailFrom);
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true, "utf-8");
if (mailFrom != null) {
helper.setFrom(mailFrom);
} else {
helper.setFrom("TransArmorAdmin@firstdata.com");
}
if (mailTo != null) {
helper.setTo(mailTo.split(","));
} else {
helper.setTo("TransArmorSupport@firstdata.com");
}
helper.setText(geContentFromTemplate(messageToBeSent), true);
helper.setSubject(env.getProperty("mailSubject"));
mailSender.send(message);
logger.info("Mail sent successfully");
}
private String geContentFromTemplate(String message ) {
VelocityEngine ve = new VelocityEngine();
ve.setProperty(RuntimeConstants.RESOURCE_LOADER, "classpath");
ve.setProperty("classpath.resource.loader.class", ClasspathResourceLoader.class.getName());
ve.init();
VelocityContext velocityContext = new VelocityContext();
velocityContext.put("message", message);
return RepeatStatus.FINISHED;
}
velocityContext.put("signature", env.getProperty("signature"));
StringWriter stringWriter = new StringWriter();
ve.mergeTemplate("templates/email-template.vm", "UTF-8", velocityContext, stringWriter);
return stringWriter.toString();
}
}