SpringBoot实现邮件发送功能的姿势分享

网友投稿 226 2022-12-22

SpringBoot实现邮件发送功能的姿势分享

目录前言I. 项目环境1. 项目依赖2. 配置II. 邮件发送1. 简单文本邮件发送2. html发送3. 添加附件4. Freemaker模板5. 测试与小结III. 不能错过的源码和相关知识点0. 项目总结

前言

邮件发送,在实际的项目开发中,可能用的不是特别多,如果没有特定的需求,相信也没有多少小伙伴会特意的去关注,那么如果现在我们希望针对项目做一个异常的报警系统,当出现异常的时候,可以向指定的小伙伴发送邮件提醒,那么让我们来实现这个功能,可以怎么办呢?

这里介绍一下如何使用SpringBoot封装好的MailSender来实现邮件发送

I. 项目环境

1. 项目依赖

本项目借助SpringBoot 2.2.1.RELEASE + maven 3.5.3 + IDEA进行开发

开一个web服务用于测试

org.springframework.boot

spring-boot-starter-freemarker

2. 配置

在开始之前,我们需要先准备一个用于发送邮件的账号,比如我这里使用163的邮箱来发送邮件,需要先到邮箱提供商哪里获取授权码,具体如何获取这个东西,不同的邮箱姿势有些不同,各位小伙伴根据自己的实际情况,搜索一下,相信很快就能get到

这里简单介绍下网易邮箱的获取方式

接下来设置发送邮件相关的配置信息,配置文件application.yml

spring:

#邮箱配置

mail:

host: smtp.163.com

from: xhhuiblog@163.com

# 使用自己的发送方用户名 + 授权码填充

username:

password:

default-encoding: UTF-8

properties:

mail:

smtp:

auth: true

starttls:

enable: true

required: true

II. 邮件发送

接下来进入正题,我们将从简单基础的文本邮件发送开始,逐渐介绍如何添加附件,使用漂亮的html模板等

1. 简单文本邮件发送

我们这里直接使用javaMailSender来发送一个基础的文本邮件

@Service

public class MailDemo {

@Autowired

private JavaMailSender javaMailSender;

@Value("${spring.mail.from:xhhuiblog@163.com}")

private String from;

private void basicSend() {

SimpleMailMessage simpleMailMessage = new SimpleMailMessage();

//邮件发送人

simpleMailMessage.setFrom(from);

//邮件接收人,可以是多个,参数为可变参数

simpleMailMessage.setTo("bangzewu@126.com");

//邮件主题,也就是标题

simpleMailMessage.setSubject("SpringBoot测试邮件发送");

//邮件内容

simpleMailMessage.setText("简单的邮件正文");

javaMailSender.send(simpleMailMessage);

}

}

JavaMailSender: 直接作为一个Spring 的bean对象使用

SimpleMailMessage:简单的邮件对象,里面有一些邮件发送时,关联的基础信息

from: 发送方

replyTo: 邮件回复的收件人

to: 收件人

cc: 抄送

bcc: 密送

subject: 主题,也就是邮件标题

text: 邮件正文,文本格式

date: 邮件发送时间

2. html发送

对于简单的文本邮件发送,用上面的基本就够了,如果我们希望邮件的内容更美观一点的话,可以借助HTML来实现排版

区别于上面的SimpleMailMessage, 这里使用的是MimeMessage,来实现html内容发送

使用姿势与上面相比差不多,无非就是正文变成了html文本罢了

/**

* 发送html

*/

public void sendHtml() throws MessagingException {

MimeMessage mimeMailMessage = javaMailSender.createMimeMessage();

MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMailMessage, true);

mimeMessageHelper.setFrom(from);

mimeMessageHelper.setTo("bangzewu@126.com");

mimeMessageHelper.setSubject("SpringBoot测试邮件发送");

//邮件内容

mimeMessageHelper.setText("

"

"