SpringBoot - 使用JavaMailSender发送邮件教程1(发送一个简单邮件)
邮件发送是一个非常常见的功能,最初 Sun 公司提供了 JavaMail 用来实现邮件发送,但是配置烦琐。后来 Spring 中提供了 JavaMailsender 用来简化邮件配置,而 Spring Boot 则提供了 MailSenderAutoConfiguration 对邮件的发送做了进一步简化。
(2)接着在 application.properties 中配置邮件基本信息:
(2)接着我们创建一个 Controller 调用这个 Service 方法进行测试:
(3)启动项目,访问 http://localhost:8080/hello 地址发送一个邮件,可以发现目标邮箱可以成功收到邮件。
一、准备工作
(1)这里我们使用 QQ 邮箱来演示邮件的发送,首先要申请开通 POP3/SMTP 服务或者 IMAP/SMTP服务。- SMTP 全称为 Simple Mail Transfer Protocol,译作简单邮件传输协议,它定义了邮件客户端软件与 SMTP 服务器之间,以及 SMTP 服务器与 SMTP 服务器之间的通信规则。也就是说,aaa@qq.com 用户先将邮件投递到腾讯的 SMTP 服务器,这个过程就使用了 SMTP 协议,然后腾讯的 SMTP 服务器将邮件投递到网易的 SMTP 服务器,这个过程依然使用了 SMTP 协议,SMTP 服务器就是用来接收邮件的。
- POP3 全称为 Post Office Protocol3,译作邮局协议,它定义了邮件客户端与 POP3 服务器之间的通信规则。当邮件到达网易的 SMTP 服务器之后,111@163.com 用户需要登录服务器查看邮件,这个时候就用上该协议了:邮件服务商会为每一个用户提供专门的邮件存储空间,SMTP 服务器收到邮件之后,将邮件保存到相应用户的邮件存储空间中,如果用户要读取邮件,就需要通过邮件服务商的 POP3 邮件服务器来完成。
- IMAP 协议,则是对 POP3 协议的扩展,功能更强,作用类似。
(2)登录 QQ 邮箱,依次单击顶部的“设置”按钮:




(1)首先编辑项目的 pom.xml 文件,添加邮件依赖:

(3)接着点击“账户”选项卡:

(4)在账户选项卡下方找到 POP3/SMTP 服务,单击后方的“开启按钮”:

(5)接着按照引导步骤发送短信,操作成功后,会获取一个授权码,将授权码保存下来后面需要使用。

二、一个简单的邮件发送样例
1,环境配置
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>
(2)接着在 application.properties 中配置邮件基本信息:
# 配置邮件服务器的地址
spring.mail.host=smtp.qq.com
# 配置邮件服务器的端口(465或587)
spring.mail.port=465
# 配置用户的账号
spring.mail.username=123@qq.com
# 配置用户的密码(即上面我们申请到的授权码)
spring.mail.password=qgczjydhuqytabcd
# 配置默认编码
spring.mail.default-encoding=UTF-8
# SSL 连接配置
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
# 开启 debug,这样方便开发者查看邮件发送日志
spring.mail.properties.mail.debug=true
2,样例代码
(1)创建一个 MailService 用来封装邮件的发送,代码如下:@Component public class MailService { // JavaMailSender 在Mail 自动配置类 MailSenderAutoConfiguration 中已经导入,这里直接注入使用即可 @Autowired JavaMailSender javaMailSender; //方法5个参数分别表示:邮件发送者、收件人、抄送人、邮件主题以及邮件内容 public void sendSimpleMail(String from, String to, String cc, String subject, String content) { // 简单邮件直接构建一个 SimpleMailMessage 对象进行配置并发送即可 SimpleMailMessage simpMsg = new SimpleMailMessage(); simpMsg.setFrom(from); simpMsg.setTo(to); simpMsg.setCc(cc); simpMsg.setSubject(subject); simpMsg.setText(content); javaMailSender.send(simpMsg); } }
(2)接着我们创建一个 Controller 调用这个 Service 方法进行测试:
@RestController public class HelloController { @Autowired MailService mailService; @GetMapping("/hello") public void hello() { mailService.sendSimpleMail("123@QQ.com", "hangge@163.com", "service@hangge.com", "我是邮件的标题", "我是邮件的内容"); } }
(3)启动项目,访问 http://localhost:8080/hello 地址发送一个邮件,可以发现目标邮箱可以成功收到邮件。
