/* * This is eMonocot, a global online biodiversity information resource. * * Copyright © 2011–2015 The Board of Trustees of the Royal Botanic Gardens, Kew and The University of Oxford * * eMonocot is free software: you can redistribute it and/or modify it under the terms of the * GNU Affero General Public License as published by the Free Software Foundation, either version 3 * of the License, or (at your option) any later version. * * eMonocot 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 Affero General Public License for more details. * * The complete text of the GNU Affero General Public License is in the source repository as the file * ‘COPYING’. It is also available from <http://www.gnu.org/licenses/>. */ package org.emonocot.service.impl; import java.util.Map; import java.util.regex.Pattern; import javax.mail.internet.MimeMessage; import org.apache.velocity.app.VelocityEngine; import org.emonocot.service.EmailService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.mail.javamail.MimeMessagePreparator; import org.springframework.ui.velocity.VelocityEngineUtils; public class EmailServiceImpl implements EmailService { /** * Email addresses are expected to be separated by commas, semi-colons, spaces or any combination thereof */ protected static final Pattern ADDRESS_DELIMITERS = Pattern.compile("(,|;| )+"); private JavaMailSender mailSender; private VelocityEngine velocityEngine; private String fromAddress; @Autowired public void setMailSender(JavaMailSender mailSender) { this.mailSender = mailSender; } @Autowired public void setVelocityEngine(VelocityEngine velocityEngine) { this.velocityEngine = velocityEngine; } public void setFromAddress(String fromAddress) { this.fromAddress = fromAddress; } @Override public void sendEmail(final String templateName, final Map model, final String toAddress, final String subject) { sendEmail(templateName, model, ADDRESS_DELIMITERS.split(toAddress), subject); } public void sendEmail(final String templateName, final Map model, final String[] toAddresses, final String subject) { MimeMessagePreparator preparator = new MimeMessagePreparator() { public void prepare(MimeMessage mimeMessage) throws Exception { MimeMessageHelper message = new MimeMessageHelper(mimeMessage); message.setTo(toAddresses); message.setFrom(fromAddress); message.setSubject(subject); String text = VelocityEngineUtils.mergeTemplateIntoString(velocityEngine, templateName, model); message.setText(text, true); } }; this.mailSender.send(preparator); } }