Spring Boot邮件功能
1.应用场景
邮件功能的应用场景可谓十分广泛,诸如注册用户、密码找回,消息通知、以及一些程序异常通知等都需要使用到该功能。
正是由于邮件功能的使用广泛,因此springboot也加在它的组件中添加了邮件。
2.maven依赖
springboot中已经给我们准备好了邮件的相关组件,我们只要在springboot项目中将其添加即可。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
添加后继续查看这个组件的相关依赖(下图),可见里面实际也是封装了javax.mail的邮件收发相关类。
3.普通邮件发送
我们首先编写一个简单text邮件的样例,之后会再在样例的demo上进行其他几种复杂邮件的发送,以及部分源码的解析。
3.1.配置文件
#我这里使用QQ邮箱来发送邮件,因此配置的host是smtp.qq.com,使用其他邮箱需要找到对应的host
spring.mail.host=smtp.qq.com
#发送邮件的邮箱账号
spring.mail.username=*********@qq.com
#发送邮件的邮箱的SMTP服务密码(有的邮箱使用的是邮箱密码,不同邮箱可能不同)
spring.mail.password=**********
#是否进行身份验证
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
3.2.使用方法
@Component
public class EmailService { @Autowired
private JavaMailSender mailSender; public void sendMsg() {
SimpleMailMessage mailMessage = new SimpleMailMessage();
// 邮件发送者,这里不能随便填写,必须是真实的发送邮件的邮箱名称
mailMessage.setFrom("527724431@qq.com");
// 邮件接受者
mailMessage.setTo("18373143942@sina.cn");
// 邮件主题
mailMessage.setSubject("testSubject");
// 邮件内容
mailMessage.setText("hello email!");
// 发送邮件
mailSender.send(mailMessage);
} }
3.3.测试代码
@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoApplicationTests { @Autowired
private EmailService emailService; @Test
public void contextLoads() {
emailService.sendMsg();
} }
3.4查看邮箱
4.复杂邮件发送
复杂邮件分为很多种情况,由于篇幅有限,这里只简单列举其中几种。
4.1多个邮件接收人
我们查看上面方法中设置的setTo()源码:
public void setTo(String to) {
this.to = new String[]{to};
} public void setTo(String... to) {
this.to = to;
}
可见里面实际是将我们传入的参数作为数组来接受的,因此我们可以以下面的两种形式来将邮件发送给多个接收者:
- 数组。
- 多个参数。
// 邮件接受者
mailMessage.setTo("","","");
mailMessage.setTo(new String[]{"",""});
4.2抄送
添加抄送者与添加接受者的方式差不多,区别在于方法名,添加抄送者方法为setCc():
public void setCc(String cc) {
this.cc = new String[]{cc};
} public void setCc(String... cc) {
this.cc = cc;
}
同样也可以添加一个,或以数组和多参数形式添加多个抄送者:
// 邮件抄送者
mailMessage.setCc("");
mailMessage.setCc("","");
mailMessage.setCc(new String[]{"",""});
4.3发送带路径的邮件
复杂邮件与简单邮件相比,这里使用的消息类不再是SimpleMailMessage。而是由邮件发送器JavaMailSender生成的MimeMessage作为消息类,同时加以一个辅助类MimeMessageHelper进行消息的添加。
public void sendComplexMsg() {
MimeMessage message = mailSender.createMimeMessage(); try {
// 生成消息辅助类,注意后面的true是用来决定是否添加附件
MimeMessageHelper messageHelper = new MimeMessageHelper(message, true);
messageHelper.setSubject("testSubject");
messageHelper.setFrom("527724431@qq.com");
messageHelper.setTo("18373143942@sina.cn");
// 这里后面的true,用来让text内容以html格式进行展示,如果不设置,里面的链接会被作为普通字符串展示
messageHelper.setText("<a href=\"#\">链接</a>", true);
} catch (MessagingException e) {
e.printStackTrace();
} mailSender.send(message); }
4.4添加附件
添加附件和添加带路径内容差不多,区别只在于多使用了"addAttachment()"方法。方法第一个参数是附件在邮件中的命名,第二个参数是要上传的文件。
一个邮件可以添加多个附件,只要继续调用addAttachment()方法即可。
但要注意的是,发送附件文件时,setText()必须要被调用,否则程序将抛出异常,无法发送邮件。
public void sendComplexMsg() {
MimeMessage message = mailSender.createMimeMessage(); try {
MimeMessageHelper messageHelper = new MimeMessageHelper(message, true);
messageHelper.setSubject("testSubject");
messageHelper.setFrom("527724431@qq.com");
messageHelper.setTo("18373143942@sina.cn");
messageHelper.setText("<a href=\"#\">链接</a>", true);
messageHelper.addAttachment("附件", new File("D://yxf//123.txt"));
} catch (MessagingException e) {
e.printStackTrace();
} mailSender.send(message); }
4.5
Spring Boot邮件功能的更多相关文章
- Spring Boot 邮件发送的 5 种姿势!
邮件发送其实是一个非常常见的需求,用户注册,找回密码等地方,都会用到,使用 JavaSE 代码发送邮件,步骤还是挺繁琐的,Spring Boot 中对于邮件发送,提供了相关的自动化配置类,使得邮件发送 ...
- Spring Boot (十二): Spring Boot 邮件服务
最早我们发邮件的时候是使用 JavaMail 来发送邮件,而在 Spring Boot 中, Spring Boot 帮我们将 JavaMail 封装好了,是可以直接拿来使用的. 1. 依赖文件 po ...
- Spring Boot 邮件配置
######################################################## spring boot mail tls ###################### ...
- Spring Boot常用功能
1.Spring Boot打war包配置 利用IDEA将SpringBoot的项目打包成war文件
- Spring Boot 邮件发送
pom文件依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...
- spring boot 邮件服务
引入依赖 添加spring-boot-starter-mail包引用 <dependency> <groupId>org.springframework.boot</gr ...
- spring boot 邮件发送(带附件)
首先开启QQ邮箱的POP.SMTP服务器,获取授权码. 设置-->账户-->POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务 pom.xml需要加载三个ja ...
- Spring Boot Mail 实现邮件发送
此 demo 主要演示了 Spring Boot 如何整合邮件功能,包括发送简单文本邮件. 邮件服务在开发中非常常见,比如用邮件注册账号.邮件作为找回密码的途径.用于订阅内容定期邮件推送等等,下面就简 ...
- Springboot 系列(十七)迅速使用 Spring Boot Admin 监控你的 Spring Boot 程序,支持异常邮件通知
1. Spring Boot Admin 是什么 Spring Boot Admin 是由 codecentric 组织开发的开源项目,使用 Spring Boot Admin 可以管理和监控你的 S ...
随机推荐
- 第十一章 Odoo 12开发之看板视图和用户端 QWeb
QWeb 是 Odoo 使用的模板引擎,它基于 XML 来生成 HTML 片断和页面.通过 QWeb可生成内容丰富的看板(Kankan)视图.报表和 CMS 网页.本文中我们将学习QWeb 语法以及如 ...
- Java笔记 - 基础语法简介
一.Java语言简介 JAVA是一种面向对象的程序设计语言,为不同级别的开发划分为J2SE.J2EE(Java Web).J2WE三种平台,可以进行桌面应用编程.WEB客户端编程.WEB服务器编程.手 ...
- 转载:Linux 安装Java
1.到官网下载 jdk-8u131-linux-x64.tar.gz 官网地址:http://www.Oracle.com/technetwork/java/javase/downloads/jdk8 ...
- Python中的HTMLParser、cookielib抓取和解析网页、从HTML文档中提取链接、图像、文本、Cookies(二)
对搜索引擎.文件索引.文档转换.数据检索.站点备份或迁移等应用程序来说,经常用到对网页(即HTML文件)的解析处理.事实上,通过 Python语言提供的各种模块,我们无需借助Web服务器或者Web浏览 ...
- day21 作业
1.定义MySQL类 1.对象有id.host.port三个属性 2.定义工具create_id,在实例化时为每个对象随机生成id,保证id唯一 3.提供两种实例化方式,方式一:用户传入host和po ...
- JAVA开源微信管家平台——JeeWx捷微V3.3版本发布(支持微信公众号,微信企业号,支付窗)
JeeWx捷微V3.3版本紧跟微信小程序更新,在原有多触点版本基础上,引入了更多的新亮点:支持微信公众号.微信企业号.支付宝服务窗等多触点开发:采用微服务框架实现,可插拔可集成,轻量级开发:对小程序的 ...
- PAT甲级——A1035 Password
To prepare for PAT, the judge sometimes has to generate random passwords for the users. The problem ...
- 文件上传 - Commons FileUpload介绍
概述 FileUpload能够以多种不同的方式使用,具体取决于应用程序的要求.在最简单的情况下,调用单个方法来解析servlet请求,然后处理解析出来的Item集合.此外也可以自定义FileUploa ...
- 切片 及 range 点睛回炉
print(list(range(-1,-5,-1))) # [-1, -2, -3, -4] # range(x,y,z) ''' 首先把 x的数值放在 数轴上 z 的正负决定 x 向前搜索(为正) ...
- Sql Server实现自动增长
在学习中遇到这个问题 数据库里有编号字段 BH00001 BH00002 BH00003 BH00004 如何实现自动增长 --下面的代码生成长度为8的编号,编号以BH开头,其余6位为流水号. --得 ...