一、集成邮件服务

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. SQL2008附加数据库报错

    sql server 2008如何导入mdf,ldf文件 网上找了很多解决sql server导入其他电脑拷过来的mdf文件,多数是不全,遇到的解决方法不一样等问题,下边是找到的解决问题的最全面方法! ...

  2. nginx代理,负载均衡

    #代理,如:通过代理实现访问百度(单个机器)创建vim proxy.conf内容如下server { listen 80; server_name www.baidu.com; location / ...

  3. 设置terminal 命令别名

    vi -/.bash_profile code () { VSCODE_CWD="$PWD" open -n -b "com.microsoft.VSCode" ...

  4. Elasticsearch 6.2.3版本 同一个index新增type报错 Rejecting mapping update to [website] as the final mapping would have more than 1 type: [blog2, blog]

    在website的index下已经存在一个名为blog的type.想在website下,新增一个名为blog2的type. 执行语句如下: PUT /website/blog2/1 { "t ...

  5. 哈希表 HashTable(又名散列表)

    简介 其实通过标题上哈希表的英文名HashTable,我们就可以看出这是一个组合的数据结构Hash+Table. Hash是什么?它是一个函数,作用可以通过一个公式来表示: index = HashF ...

  6. xmake从入门到精通9:交叉编译详解

    xmake是一个基于Lua的轻量级现代化c/c 的项目构建工具,主要特点是:语法简单易上手,提供更加可读的项目维护,实现跨平台行为一致的构建体验. 除了win, linux, macOS平台,以及an ...

  7. Jmeter 04 Jmeter变量的使用

    在使用jmeter进行接口测试时,我们难免会遇到需要从上下文中获取测试数据的情况,这个时候就需要引入变量了. 定义变量 添加->配置元件->用户自定义的变量 添加->配置元件-> ...

  8. 数组转字符串,字符串转数组 join(), split();

    join()  join() 方法用于把数组中的所有元素放入一个字符串. 元素是通过指定的分隔符进行分隔的. arrayObject.join(separator), 默认为使用逗号分隔 var ar ...

  9. Spring Boot常用功能

    1.Spring Boot打war包配置 利用IDEA将SpringBoot的项目打包成war文件

  10. spring boot-9.对springMVC的支持

    1.thymeleaf spring boot 推荐的模板引擎是thymeleaf.spring boot 的自动配置已经默认配置好了themleaf,只要导入themleaf的Starter就可以了 ...