SpirngBoot之整合邮件服务
一、集成邮件服务
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之整合邮件服务的更多相关文章
- springboot系列九,springboot整合邮件服务、整合定时任务调度
一.整合邮件服务 如果要进行邮件的整合处理,那么你一定需要有一个邮件服务器,实际上 java 本身提供有一套 JavaMail 组件以实现邮件服务器的搭建,但是这个搭建的服务器意义不大,因为你现在搭建 ...
- SpringBoot系列九:SpringBoot服务整合(整合邮件服务、定时调度、Actuator监控)
声明:本文来源于MLDN培训视频的课堂笔记,写在这里只是为了方便查阅. 1.概念:SpringBoot 服务整合 2.背景 在进行项目开发的时候经常会遇见以下的几个问题:需要进行邮件发送.定时的任务调 ...
- Springboot】Springboot整合邮件服务(HTML/附件/模板-QQ、网易)
介绍 邮件服务是常用的服务之一,作用很多,对外可以给用户发送活动.营销广告等:对内可以发送系统监控报告与告警. 本文将介绍Springboot如何整合邮件服务,并给出不同邮件服务商的整合配置. 如图所 ...
- Springboot 系列(十三)使用邮件服务
在我们这个时代,邮件服务不管是对于工作上的交流,还是平时的各种邮件通知,都是一个十分重要的存在.Java 从很早时候就可以通过 Java mail 支持邮件服务.Spring 更是对 Java mai ...
- 五、springboot 简单优雅是实现邮件服务
前言 spring boot 的项目放下小半个月没有更新了,终于闲下来可以开心的接着写啦. 之前我们配置好mybatis 多数据源的,接下来我们需要做一个邮件服务.比如你注册的时候,需要输入验证码来校 ...
- springboot整合邮件
一.邮件相关知识补充 SMTP(Simple Mail Transfer Protocol) 即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式.SMTP协议属 ...
- (转) 关于Oracle EBS邮件服务无法使用的报错
来源http://blog.itpub.net/23850820/viewspace-1060596/ 也可以检查如下网站:http://blog.sina.com.cn/s/blog_5b021b4 ...
- <邮件服务postfix+mysql>MAIL第二篇
环境:本服务是建立在第一篇的基础之上的,最好搭建好第一篇 玩此服务的前提是你的系统装好了msql和postfix服务. Postfix+mysql主要是把邮件服务的发与mysql结合使用.当然mysq ...
- Java邮件服务学习之四:邮箱服务客户端Spring Mail
一.Spring Mail API Spring邮件抽象层的主要包为org.springframework.mail,Spring提供的邮件发送不仅支持简单邮件的发送.添加附件. 1.邮件发送的核心接 ...
随机推荐
- 阶段3 2.Spring_03.Spring的 IOC 和 DI_7 spring中bean的细节之作用范围
bean的作用范围调整. 我们的bean通常情况下都是一个单例的模式 Spring是否也知道这些都是单例 构造函数只走了一次.也就是spring这个对象默认情况就是单例的 scope属性 定义bean ...
- Java学习之==>集合体系(待续。。)
一.概述 Java的集合体系,本质上是一个陈放数据的容器,像之前学过的数组也是陈放数据的容器,但在 Java 中数组的长度是固定的,使用起来没那么方便.集合提供了更加强大的功能,使用起来也更方便和快捷 ...
- Linux下源码安装MySQL-5.6.25
从mysql-5.5起,mysql源码安装开始使用cmake了,因此我们得先安装cmake,配置安装目录./configure --perfix=/.....的时候和以前的会有些区别. 一.安装cma ...
- 2019.03.30 Dialog demo 一个标准使用的dialog程序
PROGRAM zdemo_dialog. INCLUDE zdemo_dialogtop. INCLUDE zdemo_dialogo01. INCLUDE zdemo_dialogi01. INC ...
- java:异常机制(try,catch,finally,throw,throws,自定义异常)
* String类中的格式化字符串的方法: * public static String format(String format, Object... args):使用指定的格式字符串和参数返回一个 ...
- $q服务——angular
$q是做为angular的一个服务而存在的,只是对promise异步编程模式的一个简化实现版,源码中剔除注释实现代码也就二百多行,下面开始介绍$q的API. 一.defer对象(延迟对象)可以通$q. ...
- redhat7.5 替换yum源
Redhat 7自带的yum源需要付费注册,未注册情况下会报如下错误,且用yum repolist all检查源数目为0.这时候需要将RedHat 7自带的yum源 替换成CentOS 7免费源 解决 ...
- 定位网页元素、透明度、z-index、包裹性和破坏性
一.定位 position属性————规定元素的定位类型,即元素脱离文档流的布局,在页面的任意位置显示 也可以参见以前的总结 <—— 戳 static:默认值,没有定位 relative:相对定 ...
- 【Qt开发】Qt应用程序发布封装
问题:在使用Qt5.3.2编写程序并release,文件夹中已经添加了必要的dll,但在其他机子上运行程序失败,出现了下面的情况: 解决方法一:在C:\Qt\Qt5.3.2\5.3中进入mingw48 ...
- python 并发编程 IO模型介绍
gevent 底层是怎么实现? io模型4个重要概念: 两类 一类:同步.异步 提交任务的方式 同步: 提交完任务后,在原地等待结果,拿到结果后,才执行下一行代码 #所谓同步,就是在发出一个功能调用时 ...