pom文件引入第三方依赖

     <dependency><groupId>javax.mail</groupId><artifactId>mail</artifactId><version>1.4</version></dependency><!--lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency>

java代码如下


import lombok.Data;import javax.mail.Message.RecipientType;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;/*** Created by tarzan liu on 2021/5/9.*/
public abstract class EmailUtil {private static final Session session;private static final EmailAuthenticator authenticator;static {InputStream inputStream = null;try {inputStream = EmailUtil.class.getResourceAsStream("/email.properties");Properties properties = new Properties();properties.load(inputStream);authenticator = new EmailAuthenticator();String username = properties.getProperty("email.username");authenticator.setUsername(username);String password = properties.getProperty("email.password");authenticator.setPassword(password);String smtpHostName = "smtp." + username.split("@")[1];properties.put("mail.smtp.auth", "true");properties.put("mail.smtp.host", smtpHostName);session = Session.getInstance(properties, authenticator);} catch (Exception e) {throw new RuntimeException("init error.");} finally {if (inputStream != null) {try {inputStream.close();} catch (IOException e) {e.printStackTrace();}}}}private EmailUtil() { }/*** 群发邮件方法*/private static void massSend(List<String> recipients, SimpleEmail email) throws MessagingException {MimeMessage message = new MimeMessage(session);message.setFrom(new InternetAddress(authenticator.getUsername()));InternetAddress[] addresses = new InternetAddress[recipients.size()];for (int index = 0; index < recipients.size(); index ++) {addresses[index] = new InternetAddress(recipients.get(index));}message.setRecipients(RecipientType.TO, addresses);message.setSubject(email.getSubject());message.setContent(email.getContent(), "text/html;charset=utf-8");Transport.send(message);}/*** 发送邮件*/public static void send(String recipient, SimpleEmail email) throws MessagingException {List<String> recipients = new ArrayList<>();recipients.add(recipient);massSend(recipients, email);}//可以单独建一个类@Datapublic static class SimpleEmail {private String subject;private String content;}public static void main(String[] args) throws Exception {SimpleEmail simpleEmail = new SimpleEmail();simpleEmail.setSubject("今天你学习了么?");simpleEmail.setContent("今天你写博客了么");send("1334512682@qq.com", simpleEmail);}
}

email.properties 系统邮箱配置

email.username=###@163.com
email.password=###

你的邮箱账号和密码,也可以省去配置文件,直接把账号密码写死在代码。

运行测试

右键run 运行主方法。

将发送的邮箱绑定到微信上,还能实现微信提醒功能!

Java 超简单实现邮件群发工具类 | 泰山出品相关推荐

  1. JAVA 邮件发送工具类

    1.封装邮件接收地址MODEL和邮件信息MODEL package com.sicdt.jnzxgzc.common.mail.model;import java.io.Serializable; / ...

  2. Java 基于mail.jar 和 activation.jar 封装的邮件发送工具类

    准备工作 发送邮件需要获得协议和支持! 开启服务 POP3/SMTP 服务 如何开启 POP3/SMTP 服务:https://blog.csdn.net/weixin_44953227/articl ...

  3. 邮件群发工具的编写(二)数据的保存

    数据的保存与读取 人类是在不断探索与改进中进步的 上一篇,邮件群发工具的编写(一)邮件地址提取,我们讲到了邮箱的提取. 那么这一篇,讲一下提取完的邮箱信息的保存和读取. 首先,我希望对上一篇邮箱提取类 ...

  4. 封装一个邮件发送工具类,一个字,巴适

    系列文章目录 文章目录 系列文章目录 前言 一. 介绍 二.二话不说开始干 1.引入库 2. 邮件发送实体(Mail) 3. 邮件发送类型枚举(MailType ) 4.邮件发送抽象类(Abstrac ...

  5. Android基于Retrofit2.0 +RxJava 封装的超好用的RetrofitClient工具类(六)

    csdn :码小白 原文地址: http://blog.csdn.net/sk719887916/article/details/51958010 RetrofitClient 基于Retrofit2 ...

  6. 邮件群发工具的编写(四)邮件跟踪服务

    不管黑猫白猫,抓得到老鼠的就是好猫 上一篇,邮件群发工具的编写(三)邮件发送的几种方式 中,我们谈到了发送邮件.这一篇,我们讲讲邮件跟踪服务器的创建 邮件群发出去之后,很多朋友都想知道群发的效果.这就 ...

  7. (10)Java泛型-Map集合-集合框架工具类-可变参数-静态导入

    -- 部分1.5新特性Java泛型-Map集合-集合框架工具类 泛型 概述: JDK1.5版本以后出现的新特性,用于解决安全问题,是一个类型安全机制. 对于泛型可以这样理解: 没有使用泛型时,只要是对 ...

  8. Java学习总结:58(Collections工具类)

    Collections工具类 Java提供了一个集合的工具类--Collections,这个工具类可以实现List.Set.Map集合的操作.Collections类的常用方法如下: No. 方法 类 ...

  9. 简单封装浏览器 cookie 工具类

    版权声明:本文首发 http://asing1elife.com ,转载请注明出处. https://blog.csdn.net/asing1elife/article/details/8265571 ...

  10. php简单的mysql类_超简单php mysql数据库查询类

    本文章为你免费提供一款漂亮的超简单php mysql数据库查询类哦 */ class Config{ private $host;        //主机名称:一般是localhost private ...

最新文章

  1. NVIDIA TX2 使用 USB 摄像头
  2. BZOJ 1001: [BeiJing2006]狼抓兔子【最大流/SPFA+最小割,多解】
  3. 【ESSD技术解读】 云原生时代,阿里云块存储 ESSD 快照服务如何被企业级数据保护所集成?
  4. OleDb驱动调用Oracle存储过程出错:ORA-06502
  5. c++和QT实现俄罗斯方块,使用GraphicsView。
  6. Servlet之间的跳转(MVC模式)
  7. Python软件无线电(1):概述
  8. 聊一聊在Airtest自动化中如何清除iOS后台应用
  9. 段地址寄存器、偏移地址寄存器
  10. Java远程开关机(全过程)
  11. 计算机应用基础实训教程侯冬梅,计算机应用基础实训教程
  12. AI为什么救不了“想上天”的猪?
  13. 【聚水潭SDK使用说明】
  14. Windows如何使文件显示扩展名
  15. 史上最全的女生英文名字和相应的意义
  16. vue请求本地路径GET http://localhost:8080/.... 404 (Not Found)
  17. Linux MTD架构下的nand flash驱动详解
  18. linux设置java环境变量_linux配置java环境变量
  19. 基于Springboot+vue的服装销售购物商城网站 毕业设计源码
  20. MAXScript脚本用于建筑可视化

热门文章

  1. 沈阳农业大学计算机专业排名,沈阳农业大学王牌专业排名
  2. uni-app简单实现手写签名
  3. i78700和i78700k区别 i7 8700和i7 8700k 参数对比差多少
  4. iOS帐号、证书之漫谈(三)—— 申请Apple ID
  5. [量子计算]一种用于蛋白质计算的结构化学量子计算算法。(QUANTUM ALGORITHMS FOR STRUCTURAL MOLECULAR BIOLOGY)
  6. 一道闪光在图片上划过
  7. 计算机课程意见建议,对计算机课程的建议论文
  8. 淘宝开放平台接口接口,订单R2权限接口淘宝开放平台R2权限,淘宝开放平台进存销应用,top平台接口,淘宝应用市场接口,ERP软件订单接口,淘上淘接口,
  9. PUN 2 菜鸟养成记 3进入游戏
  10. PowerBI-时间智能函数-SAMEPERIODLASTYEAR