springboot发送QQ邮件(最简单方式)
前言:使用邮箱注册时发送邮件获取验证码;找回密码时通过邮箱进行验证;或者其他需要发送邮件的场景。
主要针对在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邮件(最简单方式)相关推荐
- springboot发送qq邮件
springboot发送qq邮件 1_开启邮箱相关权限并获取邮箱授权码 2_实现功能 2.1_添加mail的依赖 2.1.1_创建工程时添加 2.1.2_在工程中添加 2.2_配置文件applicat ...
- SpringBoot发送QQ邮件图片显示不出来
SpringBoot发送QQ邮件图片显示不出来 用springBoot给QQ邮箱发送带图片的邮件时,图片在电脑上显示不出来,但是从手机上可以看到,查了一些方法,好多说在邮件上有个腾讯的黄条提示,点击显 ...
- 使用springboot发送QQ邮件,可以发送附件
使用springboot发送QQ邮件 1.在application.properties中写入以下配置信息 #文件上传的配置信息 #总大小 spring.servlet.multipart.max-r ...
- 全面演示springboot发送QQ邮件过程(复杂邮件+简单邮件)图片、附件
文章目录 前言 开玩 步骤 1.导入相关依赖 2.你的邮箱配置 简单邮件 发送一个复杂邮件 前言 失踪了好久了,今天冒个泡,玩一玩邮箱
- 【springboot】 springboot发送QQ邮件 springboot整合mail教程
首先需要引入jar包 <!-- 邮件依赖 --><dependency><groupId>org.springframework.boot</groupId& ...
- spring发送qq邮件 + 模板引擎
文章目录 学习链接 邮箱配置 开启qq邮箱服务相关 配置文件 freemarker模板引擎 引入依赖 配置freemarker 编写模板 registerTpl.ftl 发送带内嵌图片的邮件 + 附件 ...
- java 发送qq邮件
发送qq邮件的简单demo 一: 在myEclipse中创建一个java项目 1:直接将该文件引入到src , 2:将activation.ja ...
- Java发送QQ邮件的3种形式(commons-email)
第一步:项目引入相应资源 commons-email-xx.jar,mail.jar,activation.jar maven项目pom引入 (注意对应配置的版本问题哦~) 可参考 --& ...
- 使用CodeIgniter框架发送QQ邮件
使用CodeIgniter框架发送QQ邮件 1.在[CodeIgniter(CI)框架]的根目录下的./application/libraries/下创建[自定义的发送QQ邮件类库:Send_Emai ...
最新文章
- RelativeLayout(相对布局)的分析
- GridControl摘录
- 3.Linux Shell流程控制
- 开源中国android代码是什么,开源中国 OsChina Android 客户端源码分析(1)启动界面 app_start...
- 快速入门人工智能的方法,持续更新ing
- 收集4:文件打开方式
- input type类型_005 类型转换,我的存款是负值
- Gini和AUC的关系(Gini=2AUC-1真的成立吗?)
- shell十三问(转)
- STM32L071 Flash写入的数据进行CRC-CCITT校验
- HAL库驱动NRF24L01实现数据传输
- 信息安全实训笔记1——身份认证技术
- Discuz招商加盟门户网站整站模板/加盟项目网站商业版源码/整站带测试数据
- HP打印机连不上解决办法
- 词向量化 Vector Representation of Words 方法汇总
- 学习常用SHEEL脚本1
- 从Android studio 2.3.3 升级到 3.1.3最新版本 导入旧项目遇到的诸多错误,终极解决办法!!
- 页面右键菜单Beta2(兼容fw)
- 搭建私人网络硬盘、个人网盘,百度网盘——Seafile安装部署指南
- 准确率、精确率、召回率、F1(F-Measure)都是什么?
热门文章
- linux集成环境包一键安装web环境
- User Profile Service服务未登录,无法加载用户配置文件的解决方案
- SSnoCD (之一)
- 库存查询 列表SQL
- 美咨商会警告第一季经济表现或将放缓 黄金下破1830美元关口
- 前后端免费学,字节跳动青训营-暑假专场报名启动
- 二分查找O(logn)和归并排序O(nlogn)时间复杂度介绍
- 河南农业开发产业投资基金管理有限责任公司
- 记一次TL-R479-GPE-AC V4.0 SSH破解
- java计算机毕业设计教学互动系统MyBatis+系统+LW文档+源码+调试部署