前言:使用邮箱注册时发送邮件获取验证码;找回密码时通过邮箱进行验证;或者其他需要发送邮件的场景。
主要针对在springboot中如何发送QQ邮件

1. 准备工作

进入QQ邮箱页面,点击设置,选择账户

开启IMAP/SMTP服务,开启服务获取QQ邮箱授权码(代码中需要用到)

2.代码部分

pom.xml 中添加以下依赖

<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-mail -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId><version>2.2.5.RELEASE</version>
</dependency>

application.properties 中添加QQ邮箱的配置

# QQ邮箱配置
spring.mail.host=smtp.qq.com
#发件人QQ邮箱地址
spring.mail.username=xxxxx@qq.com
#QQ邮箱授权码
spring.mail.password=第一步获取的授权码
#以下三项不用改动
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true

发送邮件的核心代码部分
注意:我写了两种发送邮件的方式:一种发送HTML邮件,一种发送普通文本文件,选一种即可。(还可以发送带附件的邮件哦)

package cn.duli.xianer.controller;import cn.duli.xianer.service.UsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.web.bind.annotation.*;import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;@RestController
@RequestMapping("/users")
public class UsersController {@Autowiredprivate JavaMailSender javaMailSender;//这一步是获取application.properties中设置的发件人邮箱地址@Value("${spring.mail.username}")private String username;/*** 发送HTML邮件* @param addressee* @throws MessagingException*///发送HTML邮件(接收前台传过来的参数:addressee 收件人地址)@RequestMapping("/sendMail")public void sendMail(String addressee) throws MessagingException {{// 生成6位随机数字Integer code = (int)((Math.random()*9+1)*100000);System.out.println(code);//发邮件MimeMessage mimeMessage = javaMailSender.createMimeMessage();// 第二个参数true表示使用HTML语言来编写邮件MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);//发件人邮件地址(上面获取到的,也可以直接填写,string类型)helper.setFrom(username);//收件人邮件地址helper.setTo(addressee);//邮件主题helper.setSubject("注册验证码一");//邮件正文helper.setText(""<p>您好!您此次注册xxx账号信息的验证码为:<b style='color:orange;'>" + code + "</b>,5分钟内有效,验证码提供给他人可能导致账号被盗,请勿泄露,谨防被骗。</p>", true", true);javaMailSender.send(mimeMessage);}}/*** 普通文本邮件* @param addressee  接收前台传过来的参数:addressee 收件人地址* @throws MessagingException*/@RequestMapping("/sendMail2")public void sendMail2(String addressee) {{//发邮件SimpleMailMessage message = new SimpleMailMessage();//发件人邮件地址(上面获取到的,也可以直接填写,string类型)message.setFrom(username);//收件人邮件地址message.setTo(addressee);//邮件主题message.setSubject("注册验证码二");//邮件正文message.setText("我是普通文本邮件内容");javaMailSender.send(message);}}
}

测试结果一:发送HTML邮件

测试结果二:发送普通文本邮件

3. 发送HTML模板邮件

补充:如果想要发送自定义的HTML模板邮件的话,可以使用 template
pom.xml 中添加依赖

<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-thymeleaf --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId><version>2.1.7.RELEASE</version></dependency>

修改发送邮件的代码,我把发送邮件的代码放在serviceImpl层

    @Autowiredprivate JavaMailSender javaMailSender;@Autowiredprivate TemplateEngine templateEngine;//这一步是获取application.properties中设置的发件人邮箱地址@Value("${spring.mail.username}")private String username;@Overridepublic boolean sendEmail(String email, Integer code) throws MessagingException {try {//发邮件MimeMessage mimeMessage = javaMailSender.createMimeMessage();// 第二个参数true表示使用HTML语言来编写邮件MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);//发件人邮件地址(上面获取到的,也可以直接填写,string类型)helper.setFrom(username);//收件人邮件地址helper.setTo(email);//邮件主题helper.setSubject("注册验证码");//使用模板thymeleaf//Context是导这个包import org.thymeleaf.context.Context;Context context = new Context();//设置传入模板的页面的参数 参数名为:code 参数随便写就行context.setVariable("code", code);//emailTemplate是你要发送的模板我这里用的是ThymeleafString emailContent = templateEngine.process("emailTemplate", context);//邮件正文helper.setText(emailContent, true);javaMailSender.send(mimeMessage);return true;} catch (Exception e) {return false;}}

html文件放在 template 文件下
emailTemplate.html 文件的内容

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title></title><style type="text/css">.....css代码自己写</style>
</head>
<body>
<div class="content"><div class="content-box"><div class="content-header">邮箱验证</div><div class="content-text">您好!您正在获取邮箱验证码信息,请注意邮箱验证码5分钟内有效,验证码提供给他人可能导致账号被盗,请勿泄露,谨防被骗。您的验证码是:</div><div class="content-code" th:text="${code}"></div></div>
</div>
</body>
</html>

效果演示

springboot发送QQ邮件(最简单方式)相关推荐

  1. springboot发送qq邮件

    springboot发送qq邮件 1_开启邮箱相关权限并获取邮箱授权码 2_实现功能 2.1_添加mail的依赖 2.1.1_创建工程时添加 2.1.2_在工程中添加 2.2_配置文件applicat ...

  2. SpringBoot发送QQ邮件图片显示不出来

    SpringBoot发送QQ邮件图片显示不出来 用springBoot给QQ邮箱发送带图片的邮件时,图片在电脑上显示不出来,但是从手机上可以看到,查了一些方法,好多说在邮件上有个腾讯的黄条提示,点击显 ...

  3. 使用springboot发送QQ邮件,可以发送附件

    使用springboot发送QQ邮件 1.在application.properties中写入以下配置信息 #文件上传的配置信息 #总大小 spring.servlet.multipart.max-r ...

  4. 全面演示springboot发送QQ邮件过程(复杂邮件+简单邮件)图片、附件

    文章目录 前言 开玩 步骤 1.导入相关依赖 2.你的邮箱配置 简单邮件 发送一个复杂邮件 前言 失踪了好久了,今天冒个泡,玩一玩邮箱

  5. 【springboot】 springboot发送QQ邮件 springboot整合mail教程

    首先需要引入jar包 <!-- 邮件依赖 --><dependency><groupId>org.springframework.boot</groupId& ...

  6. spring发送qq邮件 + 模板引擎

    文章目录 学习链接 邮箱配置 开启qq邮箱服务相关 配置文件 freemarker模板引擎 引入依赖 配置freemarker 编写模板 registerTpl.ftl 发送带内嵌图片的邮件 + 附件 ...

  7. java 发送qq邮件

    发送qq邮件的简单demo  一: 在myEclipse中创建一个java项目         1:直接将该文件引入到src ,                    2:将activation.ja ...

  8. Java发送QQ邮件的3种形式(commons-email)

    第一步:项目引入相应资源   commons-email-xx.jar,mail.jar,activation.jar maven项目pom引入 (注意对应配置的版本问题哦~)     可参考 --& ...

  9. 使用CodeIgniter框架发送QQ邮件

    使用CodeIgniter框架发送QQ邮件 1.在[CodeIgniter(CI)框架]的根目录下的./application/libraries/下创建[自定义的发送QQ邮件类库:Send_Emai ...

最新文章

  1. RelativeLayout(相对布局)的分析
  2. GridControl摘录
  3. 3.Linux Shell流程控制
  4. 开源中国android代码是什么,开源中国 OsChina Android 客户端源码分析(1)启动界面 app_start...
  5. 快速入门人工智能的方法,持续更新ing
  6. 收集4:文件打开方式
  7. input type类型_005 类型转换,我的存款是负值
  8. Gini和AUC的关系(Gini=2AUC-1真的成立吗?)
  9. shell十三问(转)
  10. STM32L071 Flash写入的数据进行CRC-CCITT校验
  11. HAL库驱动NRF24L01实现数据传输
  12. 信息安全实训笔记1——身份认证技术
  13. Discuz招商加盟门户网站整站模板/加盟项目网站商业版源码/整站带测试数据
  14. HP打印机连不上解决办法
  15. 词向量化 Vector Representation of Words 方法汇总
  16. 学习常用SHEEL脚本1
  17. 从Android studio 2.3.3 升级到 3.1.3最新版本 导入旧项目遇到的诸多错误,终极解决办法!!
  18. 页面右键菜单Beta2(兼容fw)
  19. 搭建私人网络硬盘、个人网盘,百度网盘——Seafile安装部署指南
  20. 准确率、精确率、召回率、F1(F-Measure)都是什么?

热门文章

  1. linux集成环境包一键安装web环境
  2. User Profile Service服务未登录,无法加载用户配置文件的解决方案
  3. SSnoCD (之一)
  4. 库存查询 列表SQL
  5. 美咨商会警告第一季经济表现或将放缓 黄金下破1830美元关口
  6. 前后端免费学,字节跳动青训营-暑假专场报名启动
  7. 二分查找O(logn)和归并排序O(nlogn)时间复杂度介绍
  8. 河南农业开发产业投资基金管理有限责任公司
  9. 记一次TL-R479-GPE-AC V4.0 SSH破解
  10. java计算机毕业设计教学互动系统MyBatis+系统+LW文档+源码+调试部署