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

原文地址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. [NOI2003]逃学的小孩 (贪心+树的直径+暴力枚举)

    Input 第一行是两个整数N(3 <= N <= 200000)和M,分别表示居住点总数和街道总数.以下M行,每行给出一条街道的信息.第i+1行包含整数Ui.Vi.Ti(1<=Ui ...

  2. Mysql 查找表中的多组前n大元素

    博客已搬家,更多内容查看https://liangyongrui.github.io/ Mysql 查找表中的多组前n大元素 如果时单组很简单,只需要排序后去前n个就行了,但是多组排序似乎就不是那么好 ...

  3. 我终于弄懂了Python的装饰器(一)

    此系列文档: 1. 我终于弄懂了Python的装饰器(一) 2. 我终于弄懂了Python的装饰器(二) 3. 我终于弄懂了Python的装饰器(三) 4. 我终于弄懂了Python的装饰器(四) 一 ...

  4. 一、kafka 安装配置

    Kafka是什么 Kafka最初是由LinkedIn公司采用Scala语言开发的一个分布式.多分区.多副本且基于ZooKeeper协调的内部基础设置,现已捐献给Apache基金会.Kafka是一个流平 ...

  5. jsp页面中同时遍历多个list集合

    在Jsp页面中,我们也许有这样的需求:从后端获取到多个List,但又想将这些List的值同时打印出来 比如, 有用户列表userList,user类有用户ID.用户名.用户性别等基本信息 有用户关系列 ...

  6. scrapy 基础组件专题(一):scrapy框架中各组件的工作流程

    Scrapy 使用了 Twisted 异步非阻塞网络库来处理网络通讯,整体架构大致如下(绿线是数据流向): Scrapy主要包括了以下组件: 引擎(Scrapy)用来处理整个系统的数据流处理, 触发事 ...

  7. python 面向对象专题(五):私有成员、类方法、静态方法、属性、isinstance/issubclass

    https://www.cnblogs.com/liubing8/p/11325421.html 目录 Python面向对象05 /私有成员.类方法.静态方法.属性.isinstance/issubc ...

  8. js 对象数组根据某个名称删除数组中的对象

    delArrayItem: function (array,item) { const index = array.findIndex(text => text.name === item.na ...

  9. Ethical Hacking - GAINING ACCESS(23)

    CLIENT SIDE ATTACK - BeEF Framework Hooking targets using MITMF Tools: MITMF and BeEF Start BeEF and ...

  10. P1525 关押罪犯(洛谷)

    前几天没做题,神经有点错乱,感觉一片虚无.今天开始继续写博客. 题目描述 S 城现有两座监狱,一共关押着N名罪犯,编号分别为1-N.他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨已久,如果客观条件 ...