文章目录

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

学习链接

java邮件发送
Java实现邮件发送
springboot发送QQ邮件(最简单方式)
刘java-Java使用JavaMail收发Email电子邮件
刘java-Spring Email发送邮件的深入学习与使用

邮箱配置

开启qq邮箱服务相关

首先需要开启服务,生成qq邮箱授权码

点击管理服务

点击 配置 SMTP/IMAP 方法

配置文件

server:port: 9091spring:mail:host: smtp.qq.com # 上面开启qq邮箱服务时, 得到的port: 587 # 上面开启qq邮箱服务时, 得到的username: 你的qq号码password: 你申请的授权码default-encoding: UTF-8

至此,就可以在项目中注册JavaMailSender,具体的使用方法,可参考学习链接中的刘java相关内容

freemarker模板引擎

它可以按照我们给定的ftl模板 + 我们提供的数据 = 得到想要的目标内容(可以使用freemarker的语法,目标内容可以是字符串内容生成的文件

引入依赖

<dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId>
</dependency>

配置freemarker

@Bean
public Configuration configuration() {Configuration configuration = new Configuration();// 可定义不同的加载器,这里使用Spring提供的(查看TemplateLoader接口的实现即可)// 注意路径要使用spring的格式的SpringTemplateLoader springTemplateLoader =new SpringTemplateLoader(new DefaultResourceLoader(), "classpath:/templates");configuration.setTemplateLoader(springTemplateLoader);return configuration;
}

编写模板

registerTpl.ftl

在resources/templates/目录中创建registerTpl.ftl模板文件,内容如下:
(里面使用了模板语法)

<html><head></head><body>欢迎注册!<img src="cid:pic" style="width:28px;height: 28px;"/> 您的验证码为: ${code}, 有效时间为5分钟</body>
</html>

发送带内嵌图片的邮件 + 附件

// 根据模板生成内容(如果模板内容处理不一致,可考虑使用策略模式)
Template template = configuration.getTemplate("registerTpl.ftl");// commons-lang3包中的工具类
String emailCode = RandomStringUtils.random(4, true, true);StringWriter writer = new StringWriter();
Map<String, Object> data = MapBuilder.newHashMap().put("code", emailCode).build();
template.process(data, writer);
writer.flush();
// 生成html内容
String htmlContent = writer.toString();// 使用JavaMailSender发送邮件
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true,"UTF-8");
helper.setFrom("1255112011@qq.com");
helper.setTo(email);
helper.setSubject(emailCodeTypeEnum.getSubject());
helper.setText(htmlContent,true);// 嵌套图片在邮件正文中
helper.addInline("pic", new ClassPathResource("static/img/avatar.png"));// 携带附件
helper.addAttachment("avatar-pic.png",new ClassPathResource("static/img/avatar.png"));// 发送邮件
javaMailSender.send(mimeMessage);// 存入redis
String emailKey = "email:{email}:optType:{optType}".replaceFirst("\\{email}", email).replaceFirst("\\{optType}", emailCodeTypeEnum.getOptType());// 注意这里redis的实现要用StringRedisTemplate,不然会加双引号
redisService.setContent(emailKey, emailCode, RedisConstants.EMAIL_VALID_TIMING);log.info("==============邮件发送成功==============");

效果

这里是找回密码的邮件,跟注册账号的邮件一样

spring发送qq邮件 + 模板引擎相关推荐

  1. spring 发送qq邮件内容和附件(样式发送邮件)

    发送邮件所需要的jar包 <!--发邮件--><dependency><groupId>javax.mail</groupId><artifact ...

  2. springboot发送QQ邮件(最简单方式)

    前言:使用邮箱注册时发送邮件获取验证码:找回密码时通过邮箱进行验证:或者其他需要发送邮件的场景. 主要针对在springboot中如何发送QQ邮件 1. 准备工作 进入QQ邮箱页面,点击设置,选择账户 ...

  3. springboot发送qq邮件

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

  4. 使用Python登录QQ邮箱发送QQ邮件

    这真是黑科技啊,原来推送的广告邮件就是这样产生的.好人用来发节日贺卡,给女朋友纪念邮件:坏人会学着发广告,垃圾邮件.我希望大家能学会了做些有趣的有意义的事情. 今天我带大家实现下简单的发邮件功能.我们 ...

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

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

  6. python3:利用SMTP协议发送QQ邮件+附件

    转载请表明出处:https://www.cnblogs.com/shapeL/p/9115887.html 1.发送QQ邮件,首先必须知道QQ邮箱的SMTP服务器 http://service.mai ...

  7. Spring Boot整合Thymeleaf模板引擎

    转载自 Spring Boot整合Thymeleaf模板引擎 什么是Thymeleaf Thymeleaf是一款用于渲染XML.XHTML.HTML5内容的模板引擎.类似Velocity,FreeMa ...

  8. html发送qq邮件消息,Python3实现发送QQ邮件功能(html)_python

    这篇文章主要为大家详细介绍了Python3实现发送QQ邮件功能,html格式的qq邮件,具有一定的参考价值,对Python3感兴趣的小伙伴们可以参考一下本文,本文为大家分享了Python3实现发送QQ ...

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

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

最新文章

  1. 20145324 20145325 《信息安全系统设计基础》实验三
  2. mysql5 7安装教程_MySQL57安装教程
  3. 汉语言处理包 HanLP 1.7.3 发布,常规维护版本
  4. 用SMTP,POP3访问Exchange邮箱:Exchange2003系列之六
  5. Unity之CharacterController2D学习笔记(1)——基础使用
  6. java数组的用法_Java数组的使用
  7. Dotnet中Socket网络通信
  8. android 横盘方向传感器,横盘震荡选择方向!
  9. sigar监控API的测试用例
  10. 软件测试面试英文自我介绍,软件测试英文面试自我介绍范文
  11. 数据结构 c语言 试卷,数据结构(C语言)试卷(1)
  12. 电脑提醒没有权限在此位置保存文件怎么办?
  13. 淘宝API接口调用:item_search_img - 按图搜索淘宝商品(拍立淘)
  14. 移除bable打包的use strict模式(vue2)
  15. win10更新后 chrome内核浏览器总是打开网页一直加载 甚至打不开 解决方法
  16. 2018乌镇峰会 -- 完美世界萧泓论道互联网与文化交流
  17. 请问中文姓氏的拼音翻译成英文有何规律?
  18. 哈希表、红黑树、B树、B+树基础
  19. Python3 open()函数
  20. 这 10 种 MySQL 经典错误案例,99% 的程序员一定遇到过!你呢?

热门文章

  1. 利用android手机摄像头智能测量物体距离,高度
  2. 【iphone4 iOS4+升级到 iOS 5 beta7详细过程与iOS 5系统截图】-Himi升级iOS 5 beta7 流程
  3. Xilinx DMA IP使用
  4. Linux排查哪个进程和IP在占用网速
  5. 在ROS使用自己安装的eigen时的cmake错误
  6. [翻译] 第二章 处理借口 (Remote)
  7. vivo的android是什么手机,酷派回归了!或成OPPO、vivo最大劲敌,2021安卓“机皇”会是谁?...
  8. 古月居深度评测Transbot ROS机器人,快来看看古月老师怎么说的吧
  9. AFNetworking说明书
  10. java中int与short哪个速度更快?