package com.guardedbox.service; import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; import org.springframework.beans.factory.annotation.Value; import org.springframework.mail.MailSendException; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import lombok.RequiredArgsConstructor; /** * Email Utils Service. * * @author [email protected] * */ @Service @RequiredArgsConstructor public class EmailService { /** Property: spring.mail.username. */ @Value("${spring.mail.username}") private final String mailUsername; /** Property: spring.mail.from. */ @Value("${spring.mail.from:}") private final String mailFrom; /** Property: spring.mail.bcc. */ @Value("${spring.mail.bcc:}") private final String mailBcc; /** JavaMailSender. */ private final JavaMailSender javaMailSender; /** * Sends an email. * * @param to Receiver. * @param subject Subject. * @param content HTML Content. */ public void send( String to, String subject, String content) { MimeMessage mimeMessage = javaMailSender.createMimeMessage(); MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage); try { if (!StringUtils.isEmpty(mailFrom)) mimeMessageHelper.setFrom(mailFrom); mimeMessageHelper.setTo(to); if (!StringUtils.isEmpty(mailBcc)) mimeMessageHelper.setBcc(mailBcc); mimeMessageHelper.setSubject(subject); mimeMessageHelper.setText(content, true); } catch (MessagingException e) { throw new MailSendException("Error setting the email attributes", e); } javaMailSender.send(mimeMessage); } /** * Sends an email asynchronously. * * @param to Receiver. * @param subject Subject. * @param content HTML Content. */ public void sendAsync( String to, String subject, String content) { new Thread(new Runnable() { @Override public void run() { send(to, subject, content); } }).start(); } }