首先是实现类:
public class EmailFast implements Runnable {
private String str;
public EmailFast(String str){
this.str=str;
}
@Override
public void run() {
JavaMailSenderImpl senderImpl = new JavaMailSenderImpl();
// 设定mail server
senderImpl.setHost("smtp.sh-xxx.com");
senderImpl.setPort(465);
senderImpl.setUsername("xxx@sh-xxx.com"); // 根据自己的情况,设置发件邮箱地址
senderImpl.setPassword("xxx"); // 根据自己的情况, 设置password
senderImpl.setDefaultEncoding("UTF-8");
Properties prop = new Properties();
prop.put("mail.smtp.auth", "true"); // 将这个参数设为true,让服务器进行认证,认证用户名和密码是否正确
prop.put("mail.smtp.ssl.enable", "true");
prop.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
senderImpl.setJavaMailProperties(prop);
MimeMessage mailMessage = senderImpl.createMimeMessage();
MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage);
// 设置收件人,寄件人
try {
messageHelper.setTo("xxx@sh-xxx.com");
messageHelper.setFrom("xxx@sh-xxx.com");
messageHelper.setSubject("xxx提醒");
// true 表示启动HTML格式的邮件
messageHelper.setText(str, true);
} catch (MessagingException e) {
e.printStackTrace();
}
senderImpl.send(mailMessage);
}
}
然后是配置线程:
@Override
public void sendEmail(String str) throws MessagingException {
BlockingQueue<Runnable> workQueue = new LinkedBlockingQueue<>();
ThreadPoolExecutor executor = new ThreadPoolExecutor(8, 12, 15, TimeUnit.MILLISECONDS,
workQueue, new ThreadPoolExecutor.CallerRunsPolicy());
EmailFast ef=new EmailFast(str);
executor.execute(ef);
System.out.println("线程池中线程数目:"+executor.getPoolSize()+",队列中等待执行的任务数目:"+
executor.getQueue().size()+",已执行玩别的任务数目:"+executor.getCompletedTaskCount());
}