一、集成邮件服务

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. apache域名跳转

    状态码:*301: 永久重定向,域名跳转一定要用301,对搜索引擎友好的. 302:临时重定向在虚拟主机配置文件/usr/local/apache2/conf/extra/httpd-vhosts & ...

  2. 阶段3 2.Spring_03.Spring的 IOC 和 DI_12 注入集合数据

    再复制一份,改名3 常用的注入方式,这里选择set saveAccount方法输出所有的对象 map需要导包 配置xml 集合类型的值配置方式 在property标签里面再写标签 这里选择array. ...

  3. SQLServer 断开指定会话

    方法1: SELECT * FROM [Master].[dbo].[SYSPROCESSES] WHERE [DBID] IN ( SELECT [DBID] FROM [Master].[dbo] ...

  4. 微信小程序---交互反馈

    1.学习大纲: 2.showToast(): wx.showToast({ title: '成功', icon: 'success', duration: }) 3.hieToast(): wx.sh ...

  5. Linux解决Python调用Matlab函数无法导入matlab.engine问题及其他注意事项

    问题描述 Linux系统,根据matlab官方文档说明,利用Matlab中的API来实现Python调用Matlab函数.具体方法见文档: https://ww2.mathworks.cn/help/ ...

  6. Java内存溢出

    中间件应用Java内存溢出常见的三种情况: 1.OutOfMemoryError: Java heap space 2.OutOfMemoryError: PermGen space 3.OutOfM ...

  7. Elasticsearch-安装、日志解读

    ES-安装.日志解读 1. 准备tar包 https://www.elastic.co/cn/products/elasticsearch2. 解压 tar -zxvf elasticsearch-. ...

  8. [转帖]Ubuntu忘记超级用户root密码,重新设置密码

    Ubuntu忘记超级用户root密码,重新设置密码 版权声明:本文为博主原创文章,转载必须指明出处. https://blog.csdn.net/weixin_37909391/article/det ...

  9. 【转帖】技术选型之Docker容器引擎

    技术选型之Docker容器引擎 https://segmentfault.com/a/1190000019462392 图过不来的 原作者写的挺好的 题外话 最近对Docker和Kubernetes进 ...

  10. Atomic实现原子性源码分析:CAS(比较并交换)、Unsafe类

    1.CAS: 比较并交换(Compare And Swap),是Unsafe类中的一条CPU系统原语,原语的执行必须是连续的,在执行过程中不允许被中断,即CAS是一条CPU的原子指令,不会造成数据不一 ...