一、基础知识

邮件常见的三大协议: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生成邮件模板相关推荐

  1. Rails测试《十一》添加邮件发送程序及测试邮件发送程序

    讲到测试邮件发送程序,我们首先要让系统可以发送邮件.我们先来给系统添加发送邮件的功能. Action Mailer in Rails 3是一个不错的视频教程,大家可以参考. 还有就是http://gu ...

  2. 邮件发送失败服务器繁忙,★邮件发送失败的原因和解决方法

    以下是对发 Hi. This is the PowerMail SMTP Server 1.0 at 72mail.cn . I'm afraid I wasn't able to deliver y ...

  3. E-mail概述 | 邮件发送协议SMTP与邮件读取协议POP3、IMAP

    文章目录 电子邮件系统的组成 用户代理UA(User Agent) 邮件服务器 邮件发送协议 邮件读取协议 POP3 IMAP POP3与IMAP的对比 基于万维网的电子邮件 补充与思考 摘抄于文献 ...

  4. java 发送图片邮件_JavaMail邮件发送-为你的邮件增加背景音乐和背景图片

    先搞一个增加背景图片 首先要准备图片,这个图片可以是本地的也可以是远程的 如果你使用本地的,那么会有一些问题,稍后再说,大家也帮忙给看看问题 如果是使用了远程,那很简单,就是发送一个HTML格式的邮件 ...

  5. PHPCMS 邮件发送 - 使用阿里云邮件推送服务的详细设置

    自从阿里云和腾讯云相继默认封闭了云主机的25端口(可申请解封) 我就使用了阿里云的邮件推送服务,感觉很是好用.把我使用PHPCMS做的网站的邮件发送也设置成了使用了阿里云的邮件推送. 我使用的邮箱是阿 ...

  6. linux命令查询邮件发送状态,Linux发邮件之mail命令详解

    一.mail命令 1.配置 vim /etc/mail.rc 文件尾增加以下内容 set from=1968089885@qq.com smtp="smtp.qq.com" set ...

  7. SpringBoot发送Email邮件-发送多人HTML邮件

    1.创建项目 当然也可以直接在pom文件加入依赖 <dependency><groupId>org.springframework.boot</groupId>&l ...

  8. 你的春节放假通知邮件发送了吗?邮件自动回复设置

    一.春节前如何给客户发送放假通知? 首先,确认发邮件的对象是有合作的客户.清晰地告知公司放假的时间安排即可,简单来说包括3个方面即可: 1.假期起始日期和开工日期:你可以把放假的那些天使用日历的形式展 ...

  9. php 邮件发送检测,php发邮件测试

    原则上我司提供的云主机产品,只要保证能够正常远程以及服务器自带基本配置正常即可. 例如:php发邮件,下面是phpmailer通过sendmail发送邮件简单测试例子. $Name = "s ...

最新文章

  1. 镜头评价指标及测试方法(三)--------测量原理及3D相机调查
  2. Traceback (most recent call last): File AttributeError: 'NoneType' object has no attribute 'group'
  3. 中国农业银行数据中心智能布线系统
  4. lambda函数,函数符_为什么您永远不应该在Lambda函数中使用print()
  5. MBA已经全面***“中国式教育”!
  6. Python中enumerate对象的用法与特点
  7. 微信小程序云数据库操作
  8. python程序文件默认扩展名_Python程序文件的扩展名是:
  9. 时间复杂度和空间复杂度
  10. NeRF 源码分析解读(一)
  11. POS机IC卡参数、公钥下载流程及POSP数据库设计
  12. 感知器算法(PLA)
  13. 求两数的最大公约数算法
  14. 《一年顶十年》,如何提高自己的赚钱水平
  15. Laravel Onion洋葱模型
  16. 怎么用stata打开dta文件_用shell命令打开任意格式的文件
  17. botton与input type=button的区别
  18. 管理类联考——写作——素材篇——论说文——写作素材01—志篇:理想•信念
  19. 计算机网络诈骗犯罪的发案规律,当前网络诈骗犯罪侦查工作中存在的问题和对策演示教学(6页)-原创力文档...
  20. java 斗地主_Java实现简单的斗地主游戏

热门文章

  1. Python删除字符串后缀问题
  2. argparse.ArgumentParser() 用法解析
  3. SAP中预制凭证简单应用分析测试
  4. 教授专栏54 | 香港科大商学院绿色金融研究小组:借鉴外地经验,培育绿色金融人才...
  5. Axure RP实例教程:组合弹出菜单效果
  6. 一篇文章读懂 React and redux 前端开发 -DvaJS, a lightweight and elm-style framework.
  7. HMM经典介绍论文【Rabiner 1989】翻译(一)——介绍
  8. 哇!這就是青春痘(下)
  9. 需求理论:Web3集成分析
  10. 开发 transport 协议转换层