Java实现多线程发送 email 邮件

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);
		}
	}


}

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值