如何用Java实现邮件群发功能
作者:WeekendFlower
时间:2023-04-24
来源:互联网
浏览:0
pom文件引入第三方依赖javax.mailmail1.4org.projectlomboklomboktruejava代码如下importlombok.Data;importjavax.mail.Message.RecipientType;importjavax.mail.MessagingException;importjavax.mail.Session;importjavax.mail.Transport;importjavax.mail.internet.InternetAddress;impo
pom文件引入第三方依赖
javax.mail 1.4 org.projectlombok lombok true
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 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 recipients = new ArrayList<>();
recipients.add(recipient);
massSend(recipients, email);
}
//可以单独建一个类
@Data
public 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 运行主方法。


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

作者最新文章
赤友清理大师
2026-09-16 17:43
南邮光擎智算团队:GaN基Micro-LED光计算芯片从理论到流片的突破
2026-09-08 18:35
多张照片怎么合成PDF文件?三种图片转PDF工具怎么选?
2026-09-03 17:04
Excel转PDF防乱版指南:在线与本地双方案及排版检查
2026-09-03 10:04
多个PDF怎么合并成一个?合并后顺序怎么检查?
2026-09-02 19:54
上一篇:
MySQL表数据操作示例及分析
热门文章
更多
精品专题
更多
Mac软件
更多
WINDOWS
更多
Windows 10
Windows
Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。
极度公式
Windows/macOS/Linux
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
















