MailSenderService.java 8.4 KB
/**
 * 该类用来发送邮件
 * 1、发送velocity 模板邮件不带附件
 * 2、发送velocity 模板邮件带附件
 */
package com.framework.mail;

import java.io.File;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;
import javax.mail.internet.MimeMessage;

import org.apache.velocity.app.VelocityEngine;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;
import org.springframework.ui.velocity.VelocityEngineUtils;

import com.framework.util.PropertiesLoader;
import com.google.common.base.Splitter;

@Service
public class MailSenderService {
	
	private static final Logger logger = LoggerFactory.getLogger(MailSenderService.class);
	
	@Resource
	private VelocityEngine velocityEngine;
	
	@Resource
    private JavaMailSenderImpl mailSender;
	
	
	/**
	 * 发送email
	 * @param subject 邮件主题
	 * @param toEmail 收件人邮箱
	 * @param templateName 模板名称
	 * @param model 模板数据 Map 集合
	 */
	public void sendEmail(String subject,String toEmail,String templateName,Map<String,Object> model) {
		try{
			MimeMessage mailMessage = mailSender.createMimeMessage();
			logger.info("fromEmail >>" + mailSender.getUsername());
			MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage,true,"UTF-8");
			messageHelper.setTo(toEmail);
			String fromAddress = PropertiesLoader.get("mail.smtp.from");
			messageHelper.setFrom(fromAddress);
			messageHelper.setSubject(subject);
			String templateLocation = PropertiesLoader.get("mail.template.path") + templateName;
			String mailText = VelocityEngineUtils.mergeTemplateIntoString(velocityEngine, templateLocation, "utf-8", model);
			messageHelper.setText(mailText,true);
			mailSender.send(mailMessage);
			logger.info("邮件发送成功"+toEmail);
		}catch(Exception e) {
			logger.error("发送邮件异常 >>", e);
		}
	}
	
	
	/**
	 * 
	 * 发送email
	 * @param subject 邮件主题
	 * @param toEmail 收件人邮箱
	 * @param templateName 模板名称
	 * @param model 模板数据 Map 集合
	 * @param file 邮件附件
	 */
	public void sendEmail(String subject,String toEmail,String templateName,File file,Map<String,Object> model) {
		try{
			MimeMessage mailMessage = mailSender.createMimeMessage();
			logger.info("fromEmail >>" + mailSender.getUsername());
			MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage,true,"UTF-8");
			messageHelper.setTo(toEmail);
			String fromAddress = PropertiesLoader.get("mail.smtp.from");
			messageHelper.setFrom(fromAddress);
			messageHelper.setSubject(subject);
			String templateLocation = PropertiesLoader.get("mail.template.path") + "/" + templateName;
			String mailText = VelocityEngineUtils.mergeTemplateIntoString(velocityEngine, templateLocation, "utf-8", model);
			messageHelper.setText(mailText,true);
			messageHelper.addAttachment(file.getName(), file);//添加到附件
			mailSender.send(mailMessage);
			logger.info("邮件发送成功"+toEmail);
		}catch(Exception e) {
			logger.error("发送邮件异常 >>", e);
		}
	}
	

        /**
         * 
         * 发送email
         * @param subject 邮件主题
         * @param toEmail 收件人邮箱
         * @param file 邮件附件
         * @param content 内容
         */
        public void sendEmail(String subject,String toEmail,File file,String content) {
                try{
                        MimeMessage mailMessage = mailSender.createMimeMessage();
                        logger.info("fromEmail >>" + mailSender.getUsername());
                        MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage,true,"UTF-8");
                        messageHelper.setTo(toEmail);
                        String fromAddress = PropertiesLoader.get("mail.smtp.from");
                        messageHelper.setFrom(fromAddress);
                        messageHelper.setSubject(subject);
                        messageHelper.setText(content);
                        messageHelper.addAttachment(file.getName(), file);//添加到附件
                        mailSender.send(mailMessage);
                        logger.info("邮件发送成功"+toEmail);
                }catch(Exception e) {
                        logger.error("发送邮件异常 >>", e);
                }
        }
        
        /**
         * 
         * @param subject
         * @param toEmail
         * @param file
         * @param content
         * @param cc :抄送
         */
        public void sendEmail(String subject,String toEmail,File file,String content,String cc) {
            try{
                    MimeMessage mailMessage = mailSender.createMimeMessage();
                    logger.info("fromEmail >>" + mailSender.getUsername());
                    MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage,true,"UTF-8");
                    if(toEmail!=null&&!"".equals(toEmail)){
                        List<String> list = Splitter.on(";").trimResults().omitEmptyStrings().splitToList(toEmail);
                        String[] arr = (String[])list.toArray(new String[list.size()]);
                        messageHelper.setTo(arr);
                    }
                    String fromAddress = PropertiesLoader.get("mail.smtp.from");
                    messageHelper.setFrom(fromAddress);
                    messageHelper.setSubject(subject);
                    messageHelper.setText(content);
                    if(cc!=null&&!"".equals(cc)){
                        List<String> list = Splitter.on(";").trimResults().omitEmptyStrings().splitToList(cc);
                        String[] arr = (String[])list.toArray(new String[list.size()]);
                        messageHelper.setCc(arr);
                    }
                    messageHelper.addAttachment(file.getName(), file);//添加到附件
                    mailSender.send(mailMessage);
                    logger.info("邮件发送成功"+toEmail);
            }catch(Exception e) {
                    logger.error("发送邮件异常 >>", e);
            }
    }
        /**
         * 
         * 发送email
         * @param subject 邮件主题
         * @param toEmail 收件人邮箱
         * @param content 内容
         */
        public void sendEmail(String subject,String toEmail,String content) {
            try{
                    MimeMessage mailMessage = mailSender.createMimeMessage();
                    logger.info("fromEmail >>" + mailSender.getUsername());
                    MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage,true,"UTF-8");
                    messageHelper.setTo(toEmail);
                    String fromAddress = PropertiesLoader.get("mail.smtp.from");
                    messageHelper.setFrom(fromAddress);
                    messageHelper.setSubject(subject);
                    messageHelper.setText(content);
                    mailSender.send(mailMessage);
                    logger.info("邮件发送成功"+toEmail);
            }catch(Exception e) {
                    logger.error("发送邮件异常 >>", e);
            }
    }


    /**
     * 发送邮件
     *
     * @param subject
     * @param email
     * @param file1
     * @param file2
     * @param file3
     * @param content
     */
        public void sendEmail(String subject,String email,File file1,File file2,File file3,String content) {
            try{
                MimeMessage mailMessage = mailSender.createMimeMessage();
                logger.info("fromEmail >>" + mailSender.getUsername());
                MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage,true,"UTF-8");
                String fromAddress = PropertiesLoader.get("mail.smtp.from");
                messageHelper.setTo(email);
                messageHelper.setFrom(fromAddress);
                messageHelper.setSubject(subject);
                messageHelper.setText(content);
                messageHelper.addAttachment(file1.getName(), file1);//添加到附件
                messageHelper.addAttachment(file2.getName(), file2);//添加到附件
                messageHelper.addAttachment(file3.getName(), file3);//添加到附件
                mailSender.send(mailMessage);
                logger.info("邮件发送成功"+email);
            }catch(Exception e) {
                logger.error("发送邮件异常 >>", e);
            }
        }
        
}