/* * Copyright (c) 2011-2012 Lockheed Martin Corporation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.eurekastreams.server.action.execution.notification.email; import java.io.Serializable; import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; import org.apache.commons.lang.StringUtils; import org.eurekastreams.commons.actions.ExecutionStrategy; import org.eurekastreams.commons.actions.context.ActionContext; import org.eurekastreams.commons.exceptions.ExecutionException; import org.eurekastreams.commons.logging.LogFactory; import org.eurekastreams.server.action.execution.email.NotificationEmailDTO; import org.eurekastreams.server.service.actions.strategies.EmailerFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * 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()); if (StringUtils.isNotBlank(request.getHtmlBody())) { 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; } }