一、集成邮件服务

1.1 获取客户端授权码

1.2 引入依赖

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

1.3 设置邮件服务属性

spring:
# 邮箱相关配置
mail:
# 邮箱服务器
host: smtp.163.com
# 邮箱帐号
username: marklogzhu@163.com
# 邮箱密码
paswoord: 之前获取到的授权码
# 默认编码格式
default-encoding: utf-8
# 属性配置
properties:
mail:
smtp:
auth: true
starttls:
enable: tue
required: true

1.4 实现邮件服务

邮件服务接口

public interface MailService {

    /**
* 发送简单邮件
*
* @param deliveryAddress 收件人地址
* @param subject 主题
* @param text 正文
*/
void sendSimpleMail(String deliveryAddress, String subject, String text); /**
* 发送带附件邮件
*
* @param deliveryAddress 收件人地址
* @param subject 主题
* @param text 正文
* @param files 附件数组
* @throws MessagingException
*/
void sendAttachmentsMail(String deliveryAddress, String subject, String text, File[] files) throws MessagingException; /**
* 发送带内联邮件
*
* @param deliveryAddress 收件人地址
* @param subject 主题
* @param text 正文
* @param file 内联文件
* @throws MessagingException
*/
void sendInlineMail(String deliveryAddress, String subject, String text, File file) throws MessagingException; /**
* 发送模板邮件
*
* @param deliveryAddress 收件人地址
* @param subject 主题
* @param templateName 模板文件
* @param contentVariableMap 模板内占位数据
* @throws MessagingException
*/
void sendTemplateMail(String deliveryAddress, String subject, String templateName,
Map<String, Object> contentVariableMap) throws MessagingException; }

邮件服务接口实现

/**
* @author zhu
* @description: 邮件服务接口实现类
* @date 2019-11-04 16:32
*/
@Service
public class MailServiceImpl implements MailService { @Autowired
private JavaMailSender mailSender;
@Autowired
private TemplateEngine templateEngine;
// 读取配置文件中的参数
@Value("${spring.mail.username}")
private String sender; @Override
public void sendSimpleMail(String deliveryAddress, String subject, String text) {
SimpleMailMessage message = new SimpleMailMessage();
// 发送者邮箱帐号
message.setFrom(sender);
// 接收者邮箱地址
message.setTo(deliveryAddress);
message.setSubject(subject);
message.setText(text);
mailSender.send(message);
} @Override
public void sendAttachmentsMail(String deliveryAddress, String subject, String text, File[] files) throws MessagingException {
MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
// 发送者邮箱帐号
helper.setFrom(sender);
// 接收者邮箱帐号
helper.setTo(deliveryAddress);
helper.setSubject(subject);
helper.setText(text);
for (File file : files) {
// 附件名称,注意附件后缀。
helper.addAttachment(file.getName(), new FileSystemResource(file));
}
mailSender.send(mimeMessage);
} @Override
public void sendInlineMail(String deliveryAddress, String subject, String text, File file) throws MessagingException {
MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
// 发送者邮箱帐号
helper.setFrom(sender);
// 接收者邮箱帐号
helper.setTo(deliveryAddress);
helper.setSubject(subject);
// cid 与文件名需要相同,不需要后缀名
helper.setText(text, true);
FileSystemResource fileSystemResource = new FileSystemResource(file);
// 与文件名需要相同,不需要后缀名
helper.addInline(file.getName().substring(0, file.getName().lastIndexOf(".")), fileSystemResource);
mailSender.send(mimeMessage);
} @Override
public void sendTemplateMail(String deliveryAddress, String subject, String templateName, Map<String, Object> contentVariableMap) throws MessagingException {
MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
helper.setFrom(sender);
helper.setTo(deliveryAddress);
helper.setSubject(subject);
//设置 map 形式数据
Context context = new Context();
context.setVariables(contentVariableMap);
//获取模板 html 代码
String text = templateEngine.process(templateName, context);
helper.setText(text, true);
mailSender.send(mimeMessage);
}
}

二、测试

2.1 测试简单邮件

测试方法:

@SpringBootTest
public class MailServiceImplTest { @Autowired
private MailService mailService;
private String deliveryAddress; @BeforeEach
public void setUp() {
deliveryAddress = "marklogzhu@163.com";
} @Test
public void testSendSimpleMail() {
String subject = "主题:简单邮件";
String text = "测试邮件内容";
mailService.sendSimpleMail(deliveryAddress,subject,text);
}
}

执行方法,查看邮箱

2.2 测试带附件邮件

测试方法:

@SpringBootTest
public class MailServiceImplTest { @Autowired
private MailService mailService;
private String deliveryAddress; @BeforeEach
public void setUp() {
deliveryAddress = "marklogzhu@163.com";
} @Test
public void testSendAttachmentsMail() throws MessagingException {
String subject = "主题:有附件";
String text = "有附件的邮件";
File[] files = new File[]{new File("C:\\Users\\zhu\\Pictures\\Camera Roll\\desktop.png")};
mailService.sendAttachmentsMail(deliveryAddress, subject, text, files);
}
}

执行方法,查看邮箱

2.3 测试带内联邮件

测试方法:

@SpringBootTest
public class MailServiceImplTest { @Autowired
private MailService mailService;
private String deliveryAddress; @BeforeEach
public void setUp() {
deliveryAddress = "marklogzhu@163.com";
} @Test
public void testSendInlineMail() throws MessagingException {
String subject = "主题:嵌入静态资源";
String text = "<html><body><img src=\\\"cid:desktop\\\" ></body></html>";
File file = new File("C:\\Users\\zhu\\Pictures\\Camera Roll\\desktop.png");
mailService.sendInlineMail(deliveryAddress, subject, text, file);
} }

执行方法,查看邮箱

2.4 测试模板邮件

引入模板依赖

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

resources/templates 目录下新建模板文件 mailTemplate.html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<body>
<h3>你好, <h2 th:text="${username}"></h2>, 这是一封模板邮件!</h3>
</body>
</html>

测试方法:

@SpringBootTest
public class MailServiceImplTest { @Autowired
private MailService mailService;
private String deliveryAddress; @BeforeEach
public void setUp() {
deliveryAddress = "marklogzhu@163.com";
}
}

执行方法,查看邮箱

SpirngBoot之整合邮件服务的更多相关文章

  1. springboot系列九,springboot整合邮件服务、整合定时任务调度

    一.整合邮件服务 如果要进行邮件的整合处理,那么你一定需要有一个邮件服务器,实际上 java 本身提供有一套 JavaMail 组件以实现邮件服务器的搭建,但是这个搭建的服务器意义不大,因为你现在搭建 ...

  2. SpringBoot系列九:SpringBoot服务整合(整合邮件服务、定时调度、Actuator监控)

    声明:本文来源于MLDN培训视频的课堂笔记,写在这里只是为了方便查阅. 1.概念:SpringBoot 服务整合 2.背景 在进行项目开发的时候经常会遇见以下的几个问题:需要进行邮件发送.定时的任务调 ...

  3. Springboot】Springboot整合邮件服务(HTML/附件/模板-QQ、网易)

    介绍 邮件服务是常用的服务之一,作用很多,对外可以给用户发送活动.营销广告等:对内可以发送系统监控报告与告警. 本文将介绍Springboot如何整合邮件服务,并给出不同邮件服务商的整合配置. 如图所 ...

  4. Springboot 系列(十三)使用邮件服务

    在我们这个时代,邮件服务不管是对于工作上的交流,还是平时的各种邮件通知,都是一个十分重要的存在.Java 从很早时候就可以通过 Java mail 支持邮件服务.Spring 更是对 Java mai ...

  5. 五、springboot 简单优雅是实现邮件服务

    前言 spring boot 的项目放下小半个月没有更新了,终于闲下来可以开心的接着写啦. 之前我们配置好mybatis 多数据源的,接下来我们需要做一个邮件服务.比如你注册的时候,需要输入验证码来校 ...

  6. springboot整合邮件

    一.邮件相关知识补充 SMTP(Simple Mail Transfer Protocol) 即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式.SMTP协议属 ...

  7. (转) 关于Oracle EBS邮件服务无法使用的报错

    来源http://blog.itpub.net/23850820/viewspace-1060596/ 也可以检查如下网站:http://blog.sina.com.cn/s/blog_5b021b4 ...

  8. <邮件服务postfix+mysql>MAIL第二篇

    环境:本服务是建立在第一篇的基础之上的,最好搭建好第一篇 玩此服务的前提是你的系统装好了msql和postfix服务. Postfix+mysql主要是把邮件服务的发与mysql结合使用.当然mysq ...

  9. Java邮件服务学习之四:邮箱服务客户端Spring Mail

    一.Spring Mail API Spring邮件抽象层的主要包为org.springframework.mail,Spring提供的邮件发送不仅支持简单邮件的发送.添加附件. 1.邮件发送的核心接 ...

随机推荐

  1. ControlTemplate in WPF —— Checkbox

    <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" x ...

  2. ElasticSearch第五步-.net平台下c#操作ElasticSearch详解

    前面我们讲解了关于ElasticSearch的安装配置,以及CRUD 本章我将讲解怎么使用c#操作ElasticSearch. 首先你需要一定的技术储备,比如:asp.net webapi,mvc,j ...

  3. vim 编辑提示swap file already exists 解决方法

    linux服务器上编辑 .ini 文件时卡死,关闭连接工具后重新进入操作该 .ini 文件时,会提示: E325: ATTENTION Found a swap file by the name &q ...

  4. Java SE 8 docs——Static Methods、Instance Methods、Abstract Methods、Concrete Methods和field

    一.Static Methods.Instance Methods.Abstract Methods.Concrete Methods ——Static Methods:静态方法 ——Instance ...

  5. Python xlsxwriter库 图表Demo

    折线图 import xlsxwriter # 创建一个excel workbook = xlsxwriter.Workbook("chart_line.xlsx") # 创建一个 ...

  6. (转)JMeter性能测试-服务器资源监控插件详解

    零.引言 我们对被测应用进行性能测试时,除了关注吞吐量.响应时间等应用自身的表现外,对应用运行所涉及的服务器资源的使用情况,也是非常重要的方面,通过实时监控,可以准确的把握不同测试场景下服务器资源消耗 ...

  7. CSS基本样式-背景属性

    代码是敲出来的,建议一个一个过一遍 背景属性 背景颜色 background-color 背景颜色 默认值是transparent(透明的) 示例代码 <!DOCTYPE html> &l ...

  8. [转帖]X86_64平台上利用qemu安装aarch64架构的虚拟机

    X86_64平台上利用qemu安装aarch64架构的虚拟机 https://blog.csdn.net/chenxiangneu/article/details/78955462 遇到原作者一样的问 ...

  9. sql server CDC报错:超出存储过程、函数、触发器的最大嵌套层数(最大层为32)

     sys.sp_MScdc_capture_job   RAISERROR(22801, 10, -1)      --原本 go sys.sp_MScdc_capture_job; go --修改后 ...

  10. CentOS7设置集群环境SSH免密访问

    1.准备工作 1)通过克隆或者其他方式获得可互相通信的多台节点(本文为3台虚拟机:hadoop101.hadoop102.hadoop103) 2)配置节点的静态IP.hostname.hosts,参 ...