package com.hehenian.biz.service.email.impl; import java.util.Date; import java.util.Map; import javax.mail.internet.MimeMessage; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.task.TaskExecutor; import org.springframework.mail.javamail.JavaMailSenderImpl; import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.ui.freemarker.FreeMarkerTemplateUtils; import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer; import com.hehenian.biz.common.base.result.IResult; import com.hehenian.biz.common.base.result.ResultSupport; import com.hehenian.biz.service.email.IMailService; import freemarker.template.Template; public class MailServiceImpl implements IMailService { private final Logger logger = Logger.getLogger(this.getClass()); @Autowired private TaskExecutor taskExecutor; @Autowired private JavaMailSenderImpl mailSender; @Autowired private FreeMarkerConfigurer freeMarkerConfigurer; @Override public IResult<?> sendMail(final String toMail, final String mailSubject, final String mailTemplate, final Map<String, Object> params, boolean async) { IResult<Integer> result = new ResultSupport<Integer>(); result.setSuccess(true); if (async) {// 异步发送邮件 taskExecutor.execute(new Runnable() { @Override public void run() { sendMail(toMail, mailSubject, mailTemplate, params); } }); } else { boolean success = sendMail(toMail, mailSubject, mailTemplate, params); result.setSuccess(success); } return result; } /** * 发送邮件 * * @param toMail * @param mailSubject * @param mailTemplate * @param params * @return */ public boolean sendMail(String toMail, String mailSubject, String mailTemplate, Map<String, Object> params) { try { MimeMessage msg = mailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(msg, true, "UTF-8"); helper.setFrom(mailSender.getUsername(), "合和年在线"); helper.setTo(toMail); helper.setSubject(mailSubject); helper.setSentDate(new Date()); Template tpl = freeMarkerConfigurer.getConfiguration().getTemplate( mailTemplate); String htmlText = FreeMarkerTemplateUtils .processTemplateIntoString(tpl, params); helper.setText(htmlText, true); mailSender.send(msg); return true; } catch (Exception e) { logger.error(e.getMessage(), e); return false; } } }