1. 首先引入依赖jar包
<!--apache email -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-email</artifactId>
<version>1.4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.62</version>
</dependency>
2. 具体代码实现
package com.sheng.executor;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.SimpleEmail;
import java.io.Serializable;
import java.util.concurrent.*;
/**
* @Author jiangzhisheng
* @Date 2020/5/12 16:46
* @Version 1.0
*/
public class ThreadPoolUtils {
/**
* 收件人邮箱地址
*/
private static String toEmail = "*****@qq.com";
/**
* 发件人邮箱地址
*/
private static String fromEmail = "auto@163.com";
/**
* 发件人,同发件人邮箱地址
*/
private static String user = "auto@163.com";
/**
* 邮箱服务器
*/
private static String mailHost = "smtp.163.com";
/**
* 授权码
*/
private static String password = "******";
/**
* 手动创建线程池
*/
private static ExecutorService pool = Executors.newCachedThreadPool();
/**
* @param message 邮件正文
* @param subject 邮件标题
* @param fromAdress 发送方地址
* @param toAddress 收件方地址
* @return
*/
@SuppressWarnings({ "deprecation", "unchecked" })
public static void sendEmail(Serializable message, String subject, String fromAdress,
String toAddress) {
try {
SimpleEmail email = new SimpleEmail();
/**
* 设定smtp服务器
*/
email.setHostName(mailHost);
/**
* 设定是否使用SSL
*/
email.setSSL(Boolean.FALSE);
/**
* 设定smtp服务器 - 发件人/授权码
*/
email.setAuthentication(user, password);
/**
* 收件人邮箱
*/
email.addTo(toAddress);
/**
* 设定内容的语言集
*/
// email.setCharset("text/html;charset=utf-8");
email.setCharset("UTF-8");
/**
* 发件人邮箱
*/
email.setFrom(fromAdress);
/**
* 标题-主题
*/
email.setSubject(subject);
/**
* 邮件内容
*/
email.setMsg(String.valueOf(message));
/**
* 发送邮件
*/
email.send();
} catch (EmailException e) {
System.out.println("发送邮件异常:" + e);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void fixThreadSendMail(Serializable message, String subject, String fromAdress, String toAddress) {
pool.execute(new Runnable() {
@Override
public void run() {
sendEmail(message, subject, fromAdress, toAddress);
}
});
}
public static void main(String[] args) {
/**
* 正常发送邮件
*/
sendEmail("邮件内容:神仙打架0-8-0.", "fighting!fighting!", fromEmail, toEmail);
for (int i = 0; i < 5; i++) {
/**
* 多线程发送邮件
*/
fixThreadSendMail("我就是多线程!", "多线程发邮件" + i, fromEmail, toEmail);
System.out.println("多线程发送邮件: " + i);
}
}
}