在实际项目中,经常需要用到邮件通知功能。比如,用户通过邮件注册,通过邮件找回密码等;又比如通过邮件发送系统情况,通过邮件发送报表信息等等,实际应用场景很多。

原文地址https://www.mmzsblog.cn/articles/2020/07/28/1595865811262.html

正常我们会用 JavaMail 相关 api 来写发送邮件的相关代码,但现在 SpringBoot 提供了一套更简易使用的封装。这篇文章,阿淼就带大家通过 SpringBoot 快速的实现发送邮件的功能。

1、开启smtp

这里以 163 邮箱为例。登录 163 邮箱之后,点击设置,如下图:

1.1、登录邮箱-设置

获取 spring.mail.password 授权码:

1.2、开启IMAP/SMTP服务,根据提示走获取授权码

这个授权码,就是发送邮件时需要的密码。

1.3、下方有服务地址SMTP服务器:smtp.163.com就是我们要的

以上步骤完成之后,就可以开始开发了。

2、新建 maven 项目

3、 pom 文件中所涉及的依赖包

导入 SpringBoot 父依赖版本为 2.02

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.2.RELEASE</version>
</parent>

导入 webmail 邮件相关依赖包

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>

4、配置文件

配置文件中参数的获取,最后介绍。

server:
port: 8082
spring:
http:
encoding:
# 编码集
charset: utf-8
enabled: true
mail:
default-encoding: UTF-8
#发送邮件的账户
username: xxxxxxx@qq.com
# 授权码(获取方式前文已描述)
password: xxxxxxyyyyyy
# (邮箱服务器地址,获取方式前文已描述)
# 163 邮箱是smtp.163.com
# qq邮箱则为smtp.qq.com
host: smtp.163.com
properties:
mail:
smtp:
ssl:
enable: true

5、发送类实现

Spring Email 抽象的核心是 MailSender 接口,MailSender 的实现能够把 Email 发送给邮件服务器,由邮件服务器实现邮件发送的功能。

Spring 自带了一个 MailSender 的实现 JavaMailSenderImpl,它会使用 JavaMail API 来发送 Email。后来 spring 推出

JavaMailSender 进一步简化邮件发送的过程,然后 SpringBoot 对此进行了封装,就有了

现在的 spring-boot-starter-mail

接下来,阿淼和大家一起通过实例看看如何在 SpringBoot 中使用 JavaMailSenderImpl 发送邮件。

简单消息邮件

@Resource
private JavaMailSenderImpl javaMailSenderImpl; public void sendSimpleMail() {
SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
// 设置邮件主题
simpleMailMessage.setSubject("账号激活");
// 设置要发送的邮件内容
simpleMailMessage.setText("hello!");
// 要发送的目标邮箱
simpleMailMessage.setTo("yyyyyyyyyy@163.com");
// 发送者邮箱和配置文件中的邮箱一致
simpleMailMessage.setFrom("xxxxxxxx@qq.com");
javaMailSenderImpl.send(simpleMailMessage);
}

复杂消息邮件

@Resource
private JavaMailSenderImpl javaMailSenderImpl; public void sendMimeMail() {
MimeMessage mimeMessage = javaMailSenderImpl.createMimeMessage();
try {
// 开启文件上传
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
// 设置文件主题
mimeMessageHelper.setSubject("账号激活");
// 设置文件内容 第二个参数设置是否支持html
mimeMessageHelper.setText("<b style='color:red'>账号激活,请点击我</b>", true);
// 设置发送到的邮箱
mimeMessageHelper.setTo("yyyyyyyyyy@163.com");
// 设置发送人和配置文件中邮箱一致
mimeMessageHelper.setFrom("xxxxxxxx@qq.com");
// 上传附件
// mimeMessageHelper.addAttachment("", new File(""));
} catch (MessagingException e) {
e.printStackTrace();
}
javaMailSenderImpl.send(mimeMessage);
}

6、 Controller

@RestController
public class SendMailController {
@Resource
private SendMail sendMail; @GetMapping("/sendSimpleMail")
public void sendSimpleMail() {
sendMail.sendSimpleMail();
} @GetMapping("/sendMimeMail")
public void sendMimeMail() {
sendMail.sendMimeMail();
}
}

7、测试

7.1、简单邮件

利用 postman 发送请求:

查看邮箱结果:

7.2、复杂邮件

利用 postman 发送请求:

查看邮箱结果:

从结果可以看出,我们设置的 <b style='color:red'>账号激活,请点击我</b> 字体样式已经展示出效果了!

参考https://www.cnblogs.com/jmcui/p/9758442.html

github代码地址:

https://github.com/mmzsblog/mmzsblog-util

玩转 SpringBoot2.x 之整合邮件发送的更多相关文章

  1. Spring Boot整合邮件发送

    概述 Spring Boot下面整合了邮件服务器,使用Spring Boot能够轻松实现邮件发送:整理下最近使用Spring Boot发送邮件和注意事项: Maven包依赖 <dependenc ...

  2. SpringBoot整合邮件发送

    本节介绍SpringBoot项目如何快速配置和发送邮件,包括简单的邮件配置.发送简单邮件.发送HTML邮件.发送携带附件的邮件等. 示例源码在:https://github.com/laolunsi/ ...

  3. springboot整合邮件发送(163邮箱发送为例)

    先登录163邮箱获取授权  勾选后安装提示会叫你设置授权密码之类的:记住授权的密码 1.引入maven依赖 <dependency> <groupId>org.springfr ...

  4. 玩转 SpringBoot2.x 之整合 thumbnailator 图片处理

    1.序 在实际项目中,有时为了响应速度,难免会对一些高清图片进行一些处理,比如图片压缩之类的,而其中压缩可能就是最为常见的.最近,阿淼就被要求实现这个功能,原因是客户那边嫌速度过慢.借此机会,阿淼今儿 ...

  5. thinkphp 整合 swiftmailer 实现邮件发送

    thinkphp swiftmailer(phpmailer) 文件夹结构 图 1 swiftmailer-phpmailer 将swiftmailer整合到thinkphp中.如上图 1 我下载的版 ...

  6. 【Thinkphp 5】 整合邮箱类 phpmailer实现邮件发送

    第一步:下载phpmailer文件,主要用到的文件只有箭头指向的两个,thinkphp5中,把class.phpmailer.php改成了phpmailer.php 第二步: 将phpmailer文件 ...

  7. SpringBoot 2.X从0到1实现邮件发送功能

    Spring中提供了JavaMailSender接口实现邮件发送功能,在SpringBoot2.X中也封装了发送邮件相关的Starter并且提供了自动化配置. 本文目录 一.添加对应的Starter二 ...

  8. c#实现邮件发送链接激活

    2016-08-24 10:09:52 public void MailSend(string email) { MailMessage MyMail = new MailMessage(); MyM ...

  9. 邮件发送服务AWS SES,Mailgun以及SendCloud(转)

    原文:http://www.l4zy.com/posts/aws_ses-mailgun-sendcloud.html 电子邮件这一已经诞生很多年的互联网基础服务并没有随着时间的推移而慢慢消亡,实际上 ...

随机推荐

  1. OldTrafford after 102 days

    THE RED GO MARCHING ON   One Team One Love Through the highs and the lows   One hundred and two long ...

  2. vue中v-model父子组件通信

    有这样的需求,父组件绑定v-model,子组件输入更改父组件v-model绑定的数值.是怎么实现的呢? 实际上v-model 只是语法糖而已. <input v-model="inpu ...

  3. cmder安装(window下好用的终端)

    cmder下载地址:cmder官网 安装步骤: 下载cmder(cmder官网)并解压缩 配置环境变量 先配置CMDER_HOME(cmder.exe所在目录) 配置path:%CMDER_HOME% ...

  4. Docker搭建部署Node项目

    前段时间做了个node全栈项目,服务端技术栈是 nginx + koa + postgresql.其中在centos上搭建环境和部署都挺费周折,部署测试服务器,接着上线的时候又部署生产环境服务器.这中 ...

  5. 关于Haskell计算斐波那契数列的思考

    背景 众所周知,Haskell语言是一门函数式编程语言.函数式编程语言的一大特点就是数值和对象都是不可变的,而这与经常需要对状态目前的值进行修改的动态规划算法似乎有些"格格不入", ...

  6. 肝了两天IntelliJ IDEA 2020,解锁11种新姿势, 真香!!!

    IDEA2020版本正式发布已经有3个月了,当时由于各方面原因(太懒)也没有去尝试新功能.于是这个周末特意去在另一个电脑上下载了最新版的IDEA,并尝试了一下.总的来说呢,体验上明显的提升. 作为一个 ...

  7. npm\cnpm\yarn\tyarn 关于源和代理的问题

    npm 是一个包管理器.Node.js 自带. cnpm 是 npm 的阿里版,用的阿里源. yarn 是另一个包管理器,不自带,需要另外装.可以单独装,也可以用 npm 装. tyarn 是 yar ...

  8. list基本使用

    list和vector的用法基本相同,区别如下: list可以头尾插入和删除,效率一样,vector只有尾部插入和删除效率才高,头部操作效率很低 list的排序有专有的接口,不能使用全局的接口,原因是 ...

  9. jmeter零散知识点

  10. leetcode题库练习_左旋转字符串

    题目:左旋转字符串 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部.请定义一个函数实现字符串左旋转操作的功能.比如,输入字符串"abcdefg"和数字2,该函数将返 ...