java + sprigboot 发送邮件

崧峻
原创
发布时间: 2025-06-10 02:41:41 | 阅读数 0收藏数 0评论数 0
封面
在现代应用开发中,邮件发送功能被广泛应用于用户注册验证、密码重置、系统通知等场景。本文将详细介绍如何在 Java 项目中基于 Spring Boot 框架集成邮件发送功能。通过使用 Spring Boot Starter Mail,我们可以轻松实现发送普通文本邮件、HTML 邮件、带附件邮件等功能。
1

前期准备

发邮箱配置需要账号和授权吗 我们打开对应的邮箱 这里以网易邮箱举例 登陆后 点击上方设置 如图1所示

点击上方POP3/SMTP 如图2

开启SMTP服务 如图3所示

获取授权码如图4所示

2

springboot配置

mail:
# 平台地址,这里用的是163邮箱,使用其他邮箱请更换
host: smtp.163.com
#默认端口号465
port: 465
# 邮箱用户名账号@163.com
username:
# 授权码
password:
# 邮箱协议
protocol: smtp
# 测试邮件服务器连接是否成功
test-connection: true
#编码
default-encoding: UTF-8
properties:
mail:
smtp:
# 设置为true表示需要进行身份验证
auth: true
starttls:
# 设置为true表示启用STARTTLS加密协议。
enable: true
# 设置为true表示要求使用STARTTLS加密协议
required: true
ssl:
# 设置为true表示启用SSL加密协议。
enable: true


授权码获取方式 看第一步


3

JavaMail 介绍

JavaMail 的扩展MailSender接口,支持将 MIME 消息作为直接参数或通过准备回调传递。通常与该类结合使用MimeMessageHelper ,以便于创建 JavaMail MimeMessages,包括附件等。

如果客户端需要额外的邮件功能,则应通过此接口与邮件发送者通信SimpleMailMessage。生产环境的实现是JavaMailSenderImpl;为了进行测试,可以基于此接口创建模拟对象。客户端通常会通过依赖注入接收 JavaMailSender 引用。

建议使用此接口的机制MimeMessagePreparator ,例如使用MimeMessageHelper来填充消息。请参阅MimeMessageHelper's javadoc示例。

整个 JavaMailSession管理都由 JavaMailSender 抽象化。客户端代码无需以任何方式处理 Session,而是将整个 JavaMail 配置和资源处理交给 JavaMailSender 实现。这也提高了可测试性。

JavaMailSender 客户端不像普通 MailSender客户端那样容易测试,但与传统 JavaMail 代码相比仍然很简单:只需createMimeMessage() 返回一个MimeMessage通过 Session.getInstance(new Properties())调用创建的普通客户端,并在各种方法的模拟实现中检查传入的消息send

4

导入依赖

<!-- 邮箱发送 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>


这个是maven的依赖 导入进来 或者自己去mvn上拉取 如图2


5

发送文本

/**
* 发送文本邮箱
*
* @param text 要发送的文本
* @param title 主题
* @param emailAccount 发送给谁
*/
public void emailTextSend(String text, String title, String... emailAccount) {
//创建简单邮件消息
SimpleMailMessage message = new SimpleMailMessage();
//谁发的
message.setFrom(from);
//谁要接收
message.setTo(emailAccount);
//邮件标题
message.setSubject(title);
//邮件内容
message.setText(text);

mailSender.send(message);
}
6

发送html

/**
* 邮箱发送html
*
* @param title 邮箱主题
* @param html 要发送的html
* @param emailAccount 发送给谁
*/
public void emailHtmlSend(String emailAccount, String title, String html) {
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper messageHelper;
try {
messageHelper = new MimeMessageHelper(message, true);
//邮件发送人
message.setFrom(from);
//邮件接收人
InternetAddress[] internetAddressTo = InternetAddress.parse(emailAccount);
messageHelper.setTo(internetAddressTo);
//邮件主题
message.setSubject(title);
//邮件内容
messageHelper.setText(html, true);
//发送邮件
mailSender.send(message);
} catch (MessagingException e) {
e.printStackTrace();
}
}
阅读记录0
点赞0
收藏0
禁止 本文未经作者允许授权,禁止转载
猜你喜欢
评论/提问(已发布 0 条)
评论 评论
收藏 收藏
分享 分享
pdf下载 下载