/** Action to send notification emails. */ public class SendNotificationEmailExecution implements ExecutionStrategy<ActionContext> { /** Log. */ private static Logger log = LoggerFactory.getLogger(LogFactory.getClassName()); /** For sending email. */ private final EmailerFactory emailer; /** * Constructor. * * @param inEmailer For sending email. */ public SendNotificationEmailExecution(final EmailerFactory inEmailer) { emailer = inEmailer; } /** {@inheritDoc} */ @Override public Serializable execute(final ActionContext inActionContext) throws ExecutionException { NotificationEmailDTO request = (NotificationEmailDTO) inActionContext.getParams(); try { MimeMessage message = emailer.createMessage(); emailer.setSubject(message, request.getSubject()); emailer.setTextBody(message, request.getTextBody()); emailer.setHtmlBody(message, request.getHtmlBody()); if (StringUtils.isNotBlank(request.getToRecipient())) { emailer.setTo(message, request.getToRecipient()); } if (StringUtils.isNotBlank(request.getBccRecipients())) { emailer.setBcc(message, request.getBccRecipients()); } if (StringUtils.isNotBlank(request.getReplyTo())) { emailer.setReplyTo(message, request.getReplyTo()); } if (request.isHighPriority()) { message.addHeader("Importance", "high"); message.addHeader("X-Priority", "1"); } emailer.sendMail(message); log.debug("Sent email for notification {}", request.getDescription()); } catch (MessagingException ex) { String msg = "Failed to send email message for notification " + request.getDescription(); log.error(msg, ex); throw new ExecutionException(msg, ex); } return null; } }