springboot邮件发送以及thyemleaf生成邮件模板
一、基础知识
邮件常见的三大协议:SMTP、POP3、IMAP
SMTP 是一个基于 TCP/IP 的应用层协议,江湖地位有点类似于 HTTP,SMTP 服务器默认监听的端口号为 25 。由于SMTP 协议是基于 TCP/IP 的应用层协议,我们可以通过 Socket 发送一封邮件。
SMTP 协议全称为 Simple Mail Transfer Protocol,译作简单邮件传输协议,它定义了邮件客户端软件与 SMTP 服务器之间,以及 SMTP 服务器与 SMTP 服务器之间的通信规则。
举个例子:
用户A使用腾讯邮箱,向网易云邮箱的用户发送一封邮件。
A用户先将邮件投递到腾讯的 SMTP 服务器( SMTP 协议),腾讯 SMTP 服务器将邮件投递到网易SMTP 服务器( SMTP 协议,SMTP 服务器就是用来收邮件)。而邮件到了网易的SMTP 服务器,B用户需要登录邮箱,便可以查看邮件(使用POP3协议,POP3 协议全称为 Post Office Protocol ,译作邮局协议,发邮件的)。至于 IMAP 协议,是对 POP3 协议的扩展,功能更强,作用与POP3相似。
二、邮件环境搭建
#pom.xml<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId>
</dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>#application.properties#配置邮件
#配置SMTP服务器地址
spring.mail.host=smtp.qq.com
#配置邮箱端口
spring.mail.port=587
#配置邮箱用户名
spring.mail.username=你的邮箱地址
#配置邮箱的授权码
spring.mail.password=邮箱授权码
#配置邮件的编码
spring.mail.default-encoding=UTF-8
#配置ssl加密工厂
mail.properties.mail.smtp.socketFactoryClass=javax.net.ssl.SSLSocketFactory
#开启debug模式,控制台打印邮件发送的日志信息
spring.mail.properties.mail.debug=true
普通邮件测试:
@AutowiredJavaMailSenderImpl mailSender; // 邮件发送@Testvoid mailTest1(){// 普通邮件发送SimpleMailMessage message = new SimpleMailMessage(); //存储邮件信息message.setFrom("@qq.com"); //发送者message.setTo("@163.com");//接收者message.setSubject("If you don't ask, you don't get");//设置邮件主题message.setSentDate(new Date());//设置发送日期// message.setCc("邮箱地址");//抄送// message.setBcc("邮箱地址");//隐秘抄送message.setText("这是一测试人性的邮件,请勿回复");//邮件正文mailSender.send(message);}
附件以及图片的邮件发送:
@AutowiredJavaMailSenderImpl mailSender; // 邮件发送@Testvoid mailTest2() throws MessagingException {// 普通邮件发送MimeMessage mimeMessage = mailSender.createMimeMessage(); //扩展邮件信息类MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true); //添加邮件内容的辅助器File file = new File("C:\\Users\\lxx\\Desktop\\110.gif");helper.setFrom("@qq.com"); //发送者helper.setTo("@qq.com");//接收者helper.setSubject("If you don't ask, you don't get");//设置邮件主题helper.setSentDate(new Date());//设置发送日期// message.setCc("邮箱地址");//抄送// message.setBcc("邮箱地址");//隐秘抄送helper.setText("<div>这是一测试人性的邮件,请勿回复</div> <div><image src='cid:p01'></div>",true);//邮件正文helper.addInline("p01",file);//向指定id添加图片helper.addAttachment("dog1",file);//添加附件mailSender.send(mimeMessage);}
使用thymeleaf作为邮件模板发送邮件
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
简易html模板:
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<p>信球 欢迎来到河南北部,骄傲的小朋友,先吃碗烩面喝完胡辣汤:</p>
<table border="1" ><tr><td width="100">美食1</td><td width="100" th:text="${food1}"></td></tr><tr><td width="100">美食2</td><td width="100" th:text="${food2}"></td></tr><tr><td width="100">价格</td><td width="100" th:text="${price}"></td></tr>
</table>
<div style="color: #37ff4e">生活要想有滋味,头顶绿色不冒昧</div>
</body>
</html>
测试代码:
@AutowiredJavaMailSenderImpl mailSender; // 邮件发送@AutowiredTemplateEngine templateEngine;//模板引擎 用于生成thymeleaf模板渲染@Testvoid mailTest3() throws MessagingException {// thymeleaf作模板邮件发送MimeMessage mimeMessage = mailSender.createMimeMessage(); //扩展邮件信息类MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true); //添加邮件内容的辅助器File file = new File("C:\\Users\\lxx\\Desktop\\110.gif");helper.setFrom("1603435095@qq.com"); //发送者helper.setTo("pianpoguairen@163.com");//接收者helper.setSubject("If you don't ask, you don't get");//设置邮件主题helper.setSentDate(new Date());//设置发送日期Context context = new Context();//创建一个环境,用于设置变量 org.thymeleaf.context.Context;context.setVariable("food1","胡辣汤");context.setVariable("food2","烩面");context.setVariable("price","有朋自远方来,这单免费");String process = templateEngine.process("mail.html", context);//生成模板 字符串格式helper.setText(process,true);helper.addAttachment("dog1.gif",file);//添加附件mailSender.send(mimeMessage);}
这是测试用的图片 切勿上升到人格 !!!
springboot邮件发送以及thyemleaf生成邮件模板相关推荐
- Rails测试《十一》添加邮件发送程序及测试邮件发送程序
讲到测试邮件发送程序,我们首先要让系统可以发送邮件.我们先来给系统添加发送邮件的功能. Action Mailer in Rails 3是一个不错的视频教程,大家可以参考. 还有就是http://gu ...
- 邮件发送失败服务器繁忙,★邮件发送失败的原因和解决方法
以下是对发 Hi. This is the PowerMail SMTP Server 1.0 at 72mail.cn . I'm afraid I wasn't able to deliver y ...
- E-mail概述 | 邮件发送协议SMTP与邮件读取协议POP3、IMAP
文章目录 电子邮件系统的组成 用户代理UA(User Agent) 邮件服务器 邮件发送协议 邮件读取协议 POP3 IMAP POP3与IMAP的对比 基于万维网的电子邮件 补充与思考 摘抄于文献 ...
- java 发送图片邮件_JavaMail邮件发送-为你的邮件增加背景音乐和背景图片
先搞一个增加背景图片 首先要准备图片,这个图片可以是本地的也可以是远程的 如果你使用本地的,那么会有一些问题,稍后再说,大家也帮忙给看看问题 如果是使用了远程,那很简单,就是发送一个HTML格式的邮件 ...
- PHPCMS 邮件发送 - 使用阿里云邮件推送服务的详细设置
自从阿里云和腾讯云相继默认封闭了云主机的25端口(可申请解封) 我就使用了阿里云的邮件推送服务,感觉很是好用.把我使用PHPCMS做的网站的邮件发送也设置成了使用了阿里云的邮件推送. 我使用的邮箱是阿 ...
- linux命令查询邮件发送状态,Linux发邮件之mail命令详解
一.mail命令 1.配置 vim /etc/mail.rc 文件尾增加以下内容 set from=1968089885@qq.com smtp="smtp.qq.com" set ...
- SpringBoot发送Email邮件-发送多人HTML邮件
1.创建项目 当然也可以直接在pom文件加入依赖 <dependency><groupId>org.springframework.boot</groupId>&l ...
- 你的春节放假通知邮件发送了吗?邮件自动回复设置
一.春节前如何给客户发送放假通知? 首先,确认发邮件的对象是有合作的客户.清晰地告知公司放假的时间安排即可,简单来说包括3个方面即可: 1.假期起始日期和开工日期:你可以把放假的那些天使用日历的形式展 ...
- php 邮件发送检测,php发邮件测试
原则上我司提供的云主机产品,只要保证能够正常远程以及服务器自带基本配置正常即可. 例如:php发邮件,下面是phpmailer通过sendmail发送邮件简单测试例子. $Name = "s ...
最新文章
- 镜头评价指标及测试方法(三)--------测量原理及3D相机调查
- Traceback (most recent call last): File AttributeError: 'NoneType' object has no attribute 'group'
- 中国农业银行数据中心智能布线系统
- lambda函数,函数符_为什么您永远不应该在Lambda函数中使用print()
- MBA已经全面***“中国式教育”!
- Python中enumerate对象的用法与特点
- 微信小程序云数据库操作
- python程序文件默认扩展名_Python程序文件的扩展名是:
- 时间复杂度和空间复杂度
- NeRF 源码分析解读(一)
- POS机IC卡参数、公钥下载流程及POSP数据库设计
- 感知器算法(PLA)
- 求两数的最大公约数算法
- 《一年顶十年》,如何提高自己的赚钱水平
- Laravel Onion洋葱模型
- 怎么用stata打开dta文件_用shell命令打开任意格式的文件
- botton与input type=button的区别
- 管理类联考——写作——素材篇——论说文——写作素材01—志篇:理想•信念
- 计算机网络诈骗犯罪的发案规律,当前网络诈骗犯罪侦查工作中存在的问题和对策演示教学(6页)-原创力文档...
- java 斗地主_Java实现简单的斗地主游戏
热门文章
- Python删除字符串后缀问题
- argparse.ArgumentParser() 用法解析
- SAP中预制凭证简单应用分析测试
- 教授专栏54 | 香港科大商学院绿色金融研究小组:借鉴外地经验,培育绿色金融人才...
- Axure RP实例教程:组合弹出菜单效果
- 一篇文章读懂 React and redux 前端开发 -DvaJS, a lightweight and elm-style framework.
- HMM经典介绍论文【Rabiner 1989】翻译(一)——介绍
- 哇!這就是青春痘(下)
- 需求理论:Web3集成分析
- 开发 transport 协议转换层