线程池异步发送邮件之MimeMessageHelper邮件发送支持自定义发送人/图片/附件/多个接收人/抄送人/暗送人

    项目中要发送邮件,写个工具类,小项目,并发量不高,但是要求:

    1.发件人是163邮箱或qq邮箱

    2.支持多个接收人/抄送人/暗送人

    3.支持正文中放图片

    4.支持附件

    5.线程池异步处理

    6.发送异常时,调用开发员自定义的异常处理类

    使用原生的java的mail.jar的API开发,需要自己调用组装很多API,MimeMessageHelper帮助类进行简化了很多步骤,用起来挺不错的。由于项目使用了spring boot,所以在pom.xml中只需添加

         <dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-mail</artifactId>
		</dependency>

即可。

  因为邮件发送有时耗时较长,所以代码中使用了线程池异步发送。下面先贴代码,再说需要注意的事项。

 异常接口,当邮件发送失败,需要做额外处理时,开发员实现该接口。

package com.nanhe.building.util;

import com.alibaba.fastjson.JSONObject;

/**
 * 邮件发送异常处理
 * @author Jfei
 *
 */
public interface MailSendExceptionHandler {

	/**
	 * 当邮件发送出现异常时,调用此方法
	 * @param e  异常类
	 * @param params  调用邮件工具类发送是传的参数,便于日志记录跟踪
	 */
	void doForException(Exception e,JSONObject params);
}

 工具类

package com.nanhe.building.util;

import java.io.File;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeUtility;

import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;

import com.alibaba.fastjson.JSONObject;

/**
 * 邮件发送(注意发送人的邮箱必须设置开通POP3/SMTP/IMAP,否则无法发送)
 * @author Jfei
 *
 */
public class MailUtil {
    /**
     * 线程池,最多同时3个线程在运行,其他的排队等候
     */
	private static ExecutorService executor = Executors.newFixedThreadPool(3);
	
	/**
	 *  发送邮件(注意发送人的邮箱必须设置开通POP3/SMTP/IMAP,否则无法发送)
	 * @param sendUserAccount 发送人email账号(163或者qq邮箱) (必填)
	 * @param sendUserPassword 发送人email的授权码(必填)
	 * @param sendUserNick
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值