Spring Boot 2发送邮件手把手图文教程

Stella981
• 阅读 845

点击上方 IT牧场 ,选择 置顶或者星标技术干货每日送达!

本文基于:Spring Boot 2.1.3,理论支持Spring Boot 2.x所有版本。

最近有童鞋问到笔者如何用Spring Boot发送邮件,故而整理下Spring Boot发送邮件的各种姿势。

说到邮件放松,相信大家对Spring Framework提供的接口 JavaMailSender 都不陌生。那么Spring Boot是否有开箱即用的邮件发送呢?

答案是肯定的。Spring Boot为发送邮件提供了starter:spring-boot-starter-mail 。

本文详细探讨如何用Spring Boot发送邮件。

一、邮箱配置

以126邮箱为例:

1 开启SMTP服务

Spring Boot 2发送邮件手把手图文教程

2 设置/重置客户端授权密码

Spring Boot 2发送邮件手把手图文教程

二、编码

2.1 准备工作

1 加依赖

<dependency>

2 写配置

spring:

2.2 发送简单邮件

public String simple() {

结果类似下图:

Spring Boot 2发送邮件手把手图文教程

2.3 发送HTML邮件

简单邮件是没有样式的,很多时候,我们希望发送的邮件内容带有样式,此时可发送HTML邮件。

public String html() throws MessagingException {

结果类似下图:

Spring Boot 2发送邮件手把手图文教程

2.4 发送带附件的邮件

很多场景下,需要为邮件插入附件,此时该怎么办呢?继续上代码——

@GetMapping("/attach")

结果类似下图:

Spring Boot 2发送邮件手把手图文教程

2.5 发送带内联附件的邮件

附件 + HTML基本能满足日常工作中多数需求。但如果能将附件内联在邮件内容中,那么体验就更好啦!如何实现附件的内联呢?

@GetMapping("/inline-attach")

由代码可知,只需在想要内联的地方使用 cid:xx 引用内联附件,然后用 addInline(xx, file)指定附件即可。两处的 xx 必须一致。

结果类似下图:

Spring Boot 2发送邮件手把手图文教程

2.6 发送基于Freemarker模板的邮件

上面的例子中,邮件内容是直接以字符串体现的,这通常不适合生产,因为实际项目中邮件往往带有变量。此时,可考虑使用Freemarker模板(或者其他模板,Spring Boot 2.x默认支持Freemarker、Groovy、Thymeleaf、Mustache四种模板引擎,也可根据需求使用其他模板引擎)。

创建Freemarker模板文件mail.ftl,并将其存放在resources/templates/ 目录中

<h1>亲爱的${username}, 欢迎关注${event}</h1>

编码:

@GetMapping("/freemarker")

此时,结果类似下图:

Spring Boot 2发送邮件手把手图文教程

三、配套代码

•GitHub[1]•Gitee[2]

干货分享

最近将个人学习笔记整理成册,使用PDF分享。关注我,回复如下代码,即可获得百度盘地址,无套路领取!

•001:《Java并发与高并发解决方案》学习笔记;•002:《深入JVM内核——原理、诊断与优化》学习笔记;•003:《Java面试宝典》•004:《Docker开源书》•005:《Kubernetes开源书》•006:《DDD速成(领域驱动设计速成)》

近期热文

面试官问我,SpringApplication.run做了哪些事?分享:个人是怎么学习新知识的MySQL数据库“十宗罪”(十大经典错误案例)干货|Spring Cloud Stream 体系及原理介绍Spring Cloud Alibaba系列教程-03-搭建生产可用的Nacos集群我最喜欢的Mybatis 3.5新特性!超实用!

关注我

Spring Boot 2发送邮件手把手图文教程

长按识别二维码,了解更多

Spring Boot 2发送邮件手把手图文教程

Spring Boot 2发送邮件手把手图文教程

”阅读之后,别忘了帮忙打卡“

Spring Boot 2发送邮件手把手图文教程

References

[1] GitHub: https://github.com/eacdy/spring-boot-study/tree/master/spring-boot-mail
[2] Gitee: https://gitee.com/itmuch/spring-boot-study/tree/master/spring-boot-mail

点"在看"是一种美德^_^

本文分享自微信公众号 - 乱敲代码(lqcoder)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
3个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Easter79 Easter79
3年前
sprintboot
一、邮件发送使用springboot自带的邮件系统就能实现邮件的发送,首先导入依赖:1、新建springboot项目,添加依赖<dependency<groupIdorg.springframework.boot</groupId<artifactIdspringbootstartermail
Wesley13 Wesley13
3年前
java的gradle项目的基本配置
plugins{id'org.springframework.boot'version'2.1.4.RELEASE'id'java'}applyplugin:'io.spring.dependencymanagement'group'com.exampl
Stella981 Stella981
3年前
Spring Boot中使用JavaMailSender发送邮件
相信使用过Spring的众多开发者都知道Spring提供了非常好用的JavaMailSender接口实现邮件发送。在SpringBoot的Starter模块中也为此提供了自动化配置。下面通过实例看看如何在SpringBoot中使用JavaMailSender发送邮件。快速入门在SpringBoot的工程中的pom.xm
Stella981 Stella981
3年前
Spring boot 的腾讯企业邮箱发送 实例
1\.引入springbootstartermail依赖包<!支持发送邮件<dependency<groupIdorg.springframework.boot</groupId<artifactIdspringbootstartermail</artifactId
Easter79 Easter79
3年前
SpringBoot使用JavaMailSender发送邮件(1)
邮件发送是一个非常常见的功能,最初Sun公司提供了JavaMail用来实现邮件发送,但是配置烦琐。后来Spring中提供了JavaMailsender用来简化邮件配置,而SpringBoot则提供了MailSenderAutoConfiguration对邮件的发送做了进一步简化。在开始之前我们需要申请开通POP3/SMTP服
Stella981 Stella981
3年前
Docker 部署SpringBoot项目不香吗?
  公众号改版后文章乱序推荐,希望你可以点击上方“Java进阶架构师”,点击右上角,将我们设为★“星标”!这样才不会错过每日进阶架构文章呀。  !(http://dingyue.ws.126.net/2020/0920/b00fbfc7j00qgy5xy002kd200qo00hsg00it00cj.jpg)  2
Stella981 Stella981
3年前
SpringBoot使用JavaMailSender发送邮件(1)
邮件发送是一个非常常见的功能,最初Sun公司提供了JavaMail用来实现邮件发送,但是配置烦琐。后来Spring中提供了JavaMailsender用来简化邮件配置,而SpringBoot则提供了MailSenderAutoConfiguration对邮件的发送做了进一步简化。在开始之前我们需要申请开通POP3/SMTP服
Stella981 Stella981
3年前
Skywalking系列博客6
点击上方 IT牧场 ,选择 置顶或者星标技术干货每日送达!!(https://oscimg.oschina.net/oscnet/92eb98e2baa14e5fbf1f69872ccfbe35.jpg)前置知识在正式进入编写环节之前,建议先花一点时间了解下javaagent(这是JDK5引入的一个玩意儿,最好