Java tutorial
package com.miserablemind.butter.domain.service.email; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.apache.velocity.app.VelocityEngine; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.FileSystemResource; import org.springframework.mail.MailException; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.mail.javamail.MimeMessagePreparator; import org.springframework.stereotype.Service; import org.springframework.ui.velocity.VelocityEngineUtils; import javax.mail.internet.MimeMessage; /* * Miserable Mind * http://www.butter.miserablemind.com * The MIT License (MIT) */ /** * Service bean that handles the ways the messages are sent through {@link JavaMailSender}. * * @author <a href="http://www.miserablemind.com" target="_blank">miserablemind</a> */ @Service public class EmailService { private static final Logger logger = Logger.getLogger(EmailService.class); @Autowired private JavaMailSender mailSender; @Autowired private VelocityEngine velocityEngine; /** * Sends a plain text message. Uses {@link EmailMessage#getPlainTextBody()} * * @param emailMessage prepared message object to be sent. Usually prepared by {@link EmailManager} */ public void sendTextMail(EmailMessage emailMessage) { SimpleMailMessage textMessage = new SimpleMailMessage(); textMessage.setFrom(emailMessage.getFromAddress().getAddress()); textMessage.setTo(emailMessage.getToEmail()); textMessage.setSubject(emailMessage.getSubject()); textMessage.setText(emailMessage.getPlainTextBody()); try { this.mailSender.send(textMessage); } catch (MailException e) { logger.error("Email Service Exception Send Text Mail: " + e.getMessage(), e); } } /** * Sends a mime mail with a specified Velocity template that may contain HTML and attachments. * * @param emailMessage prepared message object to be sent. Usually prepared by {@link EmailManager} */ public void sendMimeMail(final EmailMessage emailMessage) { MimeMessagePreparator preparedMessage = new MimeMessagePreparator() { public void prepare(MimeMessage mimeMessage) throws Exception { MimeMessageHelper message = new MimeMessageHelper(mimeMessage, true); message.setTo(emailMessage.getToEmail()); message.setFrom(emailMessage.getFromAddress()); message.setReplyTo(emailMessage.getFromAddress()); message.setSubject(emailMessage.getSubject()); String body = VelocityEngineUtils.mergeTemplateIntoString(velocityEngine, emailMessage.getTemplatePath(), "UTF-8", emailMessage.getModel()); message.setText(body, true); if (!StringUtils.isBlank(emailMessage.getAttachmentPath())) { FileSystemResource file = new FileSystemResource(emailMessage.getAttachmentPath()); message.addAttachment(emailMessage.getAttachmentName(), file); } } }; try { this.mailSender.send(preparedMessage); } catch (MailException e) { logger.error("Email Service Exception Send Mime Mail: " + e.getMessage(), e); } } }