Java 超简单实现邮件群发工具类 | 泰山出品
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 超简单实现邮件群发工具类 | 泰山出品相关推荐
- JAVA 邮件发送工具类
1.封装邮件接收地址MODEL和邮件信息MODEL package com.sicdt.jnzxgzc.common.mail.model;import java.io.Serializable; / ...
- Java 基于mail.jar 和 activation.jar 封装的邮件发送工具类
准备工作 发送邮件需要获得协议和支持! 开启服务 POP3/SMTP 服务 如何开启 POP3/SMTP 服务:https://blog.csdn.net/weixin_44953227/articl ...
- 邮件群发工具的编写(二)数据的保存
数据的保存与读取 人类是在不断探索与改进中进步的 上一篇,邮件群发工具的编写(一)邮件地址提取,我们讲到了邮箱的提取. 那么这一篇,讲一下提取完的邮箱信息的保存和读取. 首先,我希望对上一篇邮箱提取类 ...
- 封装一个邮件发送工具类,一个字,巴适
系列文章目录 文章目录 系列文章目录 前言 一. 介绍 二.二话不说开始干 1.引入库 2. 邮件发送实体(Mail) 3. 邮件发送类型枚举(MailType ) 4.邮件发送抽象类(Abstrac ...
- Android基于Retrofit2.0 +RxJava 封装的超好用的RetrofitClient工具类(六)
csdn :码小白 原文地址: http://blog.csdn.net/sk719887916/article/details/51958010 RetrofitClient 基于Retrofit2 ...
- 邮件群发工具的编写(四)邮件跟踪服务
不管黑猫白猫,抓得到老鼠的就是好猫 上一篇,邮件群发工具的编写(三)邮件发送的几种方式 中,我们谈到了发送邮件.这一篇,我们讲讲邮件跟踪服务器的创建 邮件群发出去之后,很多朋友都想知道群发的效果.这就 ...
- (10)Java泛型-Map集合-集合框架工具类-可变参数-静态导入
-- 部分1.5新特性Java泛型-Map集合-集合框架工具类 泛型 概述: JDK1.5版本以后出现的新特性,用于解决安全问题,是一个类型安全机制. 对于泛型可以这样理解: 没有使用泛型时,只要是对 ...
- Java学习总结:58(Collections工具类)
Collections工具类 Java提供了一个集合的工具类--Collections,这个工具类可以实现List.Set.Map集合的操作.Collections类的常用方法如下: No. 方法 类 ...
- 简单封装浏览器 cookie 工具类
版权声明:本文首发 http://asing1elife.com ,转载请注明出处. https://blog.csdn.net/asing1elife/article/details/8265571 ...
- php简单的mysql类_超简单php mysql数据库查询类
本文章为你免费提供一款漂亮的超简单php mysql数据库查询类哦 */ class Config{ private $host; //主机名称:一般是localhost private ...
最新文章
- NVIDIA TX2 使用 USB 摄像头
- BZOJ 1001: [BeiJing2006]狼抓兔子【最大流/SPFA+最小割,多解】
- 【ESSD技术解读】 云原生时代,阿里云块存储 ESSD 快照服务如何被企业级数据保护所集成?
- OleDb驱动调用Oracle存储过程出错:ORA-06502
- c++和QT实现俄罗斯方块,使用GraphicsView。
- Servlet之间的跳转(MVC模式)
- Python软件无线电(1):概述
- 聊一聊在Airtest自动化中如何清除iOS后台应用
- 段地址寄存器、偏移地址寄存器
- Java远程开关机(全过程)
- 计算机应用基础实训教程侯冬梅,计算机应用基础实训教程
- AI为什么救不了“想上天”的猪?
- 【聚水潭SDK使用说明】
- Windows如何使文件显示扩展名
- 史上最全的女生英文名字和相应的意义
- vue请求本地路径GET http://localhost:8080/.... 404 (Not Found)
- Linux MTD架构下的nand flash驱动详解
- linux设置java环境变量_linux配置java环境变量
- 基于Springboot+vue的服装销售购物商城网站 毕业设计源码
- MAXScript脚本用于建筑可视化
热门文章
- 沈阳农业大学计算机专业排名,沈阳农业大学王牌专业排名
- uni-app简单实现手写签名
- i78700和i78700k区别 i7 8700和i7 8700k 参数对比差多少
- iOS帐号、证书之漫谈(三)—— 申请Apple ID
- [量子计算]一种用于蛋白质计算的结构化学量子计算算法。(QUANTUM ALGORITHMS FOR STRUCTURAL MOLECULAR BIOLOGY)
- 一道闪光在图片上划过
- 计算机课程意见建议,对计算机课程的建议论文
- 淘宝开放平台接口接口,订单R2权限接口淘宝开放平台R2权限,淘宝开放平台进存销应用,top平台接口,淘宝应用市场接口,ERP软件订单接口,淘上淘接口,
- PUN 2 菜鸟养成记 3进入游戏
- PowerBI-时间智能函数-SAMEPERIODLASTYEAR