/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */ package com.liferay.calendar.notification.impl; import com.liferay.calendar.model.CalendarNotificationTemplate; import com.liferay.calendar.model.CalendarNotificationTemplateConstants; import com.liferay.calendar.notification.NotificationField; import com.liferay.mail.kernel.model.MailMessage; import com.liferay.mail.kernel.service.MailServiceUtil; import javax.mail.internet.InternetAddress; /** * @author Eduardo Lundgren */ public class EmailNotificationSender implements NotificationSender { @Override public void sendNotification( String fromAddress, String fromName, NotificationRecipient notificationRecipient, NotificationTemplateContext notificationTemplateContext) throws NotificationSenderException { try { CalendarNotificationTemplate calendarNotificationTemplate = notificationTemplateContext.getCalendarNotificationTemplate(); String fromAddressValue = NotificationUtil.getTemplatePropertyValue( calendarNotificationTemplate, CalendarNotificationTemplateConstants.PROPERTY_FROM_ADDRESS, fromAddress); String fromNameValue = NotificationUtil.getTemplatePropertyValue( calendarNotificationTemplate, CalendarNotificationTemplateConstants.PROPERTY_FROM_NAME, fromName); notificationTemplateContext.setFromAddress(fromAddressValue); notificationTemplateContext.setFromName(fromNameValue); notificationTemplateContext.setToAddress( notificationRecipient.getEmailAddress()); notificationTemplateContext.setToName( notificationRecipient.getName()); String subject = NotificationTemplateRenderer.render( notificationTemplateContext, NotificationField.SUBJECT); String body = NotificationTemplateRenderer.render( notificationTemplateContext, NotificationField.BODY); sendNotification( notificationTemplateContext.getFromAddress(), notificationTemplateContext.getFromName(), notificationRecipient, subject, body); } catch (Exception e) { throw new NotificationSenderException(e); } } @Override public void sendNotification( String fromAddress, String fromName, NotificationRecipient notificationRecipient, String subject, String notificationMessage) throws NotificationSenderException { try { InternetAddress fromInternetAddress = new InternetAddress( fromAddress, fromName); MailMessage mailMessage = new MailMessage( fromInternetAddress, subject, notificationMessage, true); mailMessage.setHTMLFormat(notificationRecipient.isHTMLFormat()); InternetAddress toInternetAddress = new InternetAddress( notificationRecipient.getEmailAddress()); mailMessage.setTo(toInternetAddress); MailServiceUtil.sendEmail(mailMessage); } catch (Exception e) { throw new NotificationSenderException( "Unable to send mail message", e); } } }