1 分钟教会你用 Spring Boot 发邮件
Spring Boot 提供了一个发送邮件的简单抽象,使用的是下面这个接口。
org.springframework.mail.javamail.JavaMailSender
Spring Boot 提供了一个 starter
,并能自动配置,下面来做个小例子,顺便解析它做了什么工作。
0、你所需具备的基础
- 什么是 Spring Boot?
- Spring Boot 核心配置文件详解
- Spring Boot 开启的 2 种方式
- Spring Boot 自动配置原理、实战
- Spring Boot 2.x 启动全过程源码分析
1、添加依赖
在 Maven pom.xml
配置文件中加入 spring-boot-starter-mail
依赖。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
2、添加配置参数
然后在 application.properties
文件中加入以下配置。
spring.mail.host=smtp.exmail.qq.com
spring.mail.username=admin@javastack.cn
spring.mail.password=123456
# 启动SSL时的配置
spring.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
spring.mail.smtp.socketFactory.fallback=false
spring.mail.smtp.socketFactory.port=465
3、一个简单的发送邮件例子
写一个控制器,写一个简单的发送邮件的小例子,发送成功返回 true
,发送失败返回 false
。
@Autowired
private JavaMailSender javaMailSender;
@RequestMapping("/sendEmail")
@ResponseBody
public boolean sendEmail() {
SimpleMailMessage msg = new SimpleMailMessage();
msg.setFrom("admin@javastack.cn");
msg.setBcc();
msg.setTo("admin@javastack.cn");
msg.setSubject("Java技术栈投稿");
msg.setText("技术分享");
try {
javaMailSender.send(msg);
} catch (MailException ex) {
System.err.println(ex.getMessage());
return false;
}
return true;
}
4、自动配置都做了什么?
Spring Boot 发现类路径下有这个 spring-boot-starter-mail
包和 spring.mail.host
参数就会自动配置 JavaMailSenderImpl
。
上面那些 spring.mail.xx
参数用来装配 MailProperties
这个类。
org.springframework.boot.autoconfigure.mail.MailProperties
自动配置类:
org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration
org.springframework.boot.autoconfigure.mail.MailSenderPropertiesConfiguration
其实就是用了上面装配的参数注册了一个 JavaMailSenderImpl
实例而已,然后你就可以注入使用了。
原文发布时间为:2018-10-30
本文作者: 栈长
本文来自云栖社区合作伙伴“Java技术栈”,了解相关信息可以关注“Java技术栈”。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
你必须掌握的 21 个 Java 核心技术!
写这篇文章的目的是想总结一下自己这么多年来使用java的一些心得体会,希望可以给大家一些经验,能让大家更好学习和使用Java。 这次介绍的主要内容是和J2SE相关的部分,另外,会在以后再介绍些J2EE相关的、和Java中各个框架相关的内容。 经过这么多年的Java开发,以及结合平时面试Java开发者的一些经验,我觉得对于J2SE方面主要就是要掌握以下的一些内容。 1. JVM相关 对于刚刚接触Java的人来说,JVM相关的知识不一定需要理解很深,对此里面的概念有一些简单的了解即可。 不过对于一个有着3年以上Java经验的资深开发者来说,不会JVM几乎是不可接受的。 JVM作为java运行的基础,很难相信对于JVM一点都不了解的人可以把java语言吃得很透。 我在面试有超过3年Java经验的开发者的时候, JVM几乎就是一个必问的问题了。 当然JVM不是唯一决定技术能力好坏的面试问题,但是可以佐证java开发能力的高低。 在JVM这个大类中,我认为需要掌握的知识有: ● JVM内存模型和结构 ● GC原理,性能调优 ● 调优:Thread Dump, 分析内存结构 ● class 二进制...
- 下一篇
JVM(二)—GC垃圾回收
学习Java或者从事Java开发的程序员应该都知道,在Java语言背后有着一套成熟的体系,这个体系支撑着Java项目的生存周期,并且在Java项目生存期间,GC机制为整个项目的运行提供了不可忽略的作用,可以说GC是Java语言的核心 浅谈JVM中运行时的内存区域分布 首先,程序计数器和Java虚拟机栈、本地方法栈3个区域都是线程私有的部分,也就是说,这三个部分上面分配的运行时内存都会伴随着线程执行结束而自动被释放,尤其是在逃逸分析之后的栈上分配更是为了减少GC消耗的性能采用的一种方案 栈上分配这个概念之前在总结中也有提到,这种技术的实现,也就可以将一些方法内创建的实例对象需要的内存大小直接开辟在虚拟机栈上,并且随着方法的执行和结束,伴随着栈帧的入栈和出栈,这一块申请在栈上的内存空间也将直接被回收,不需要GC的参与 堆和方法区 说到方法区,需要清楚的一个概念是,方法区是JVM规范中的运行时数据区的一个部分,其余的组成可以参考之前的博客,至于永久带以及元空间这两种说法,是不同的JVM或不同版本的JVM对方法区的一种具体实现,永久带和元空间都是HotSpot JVM的实现方式,1.7和之前的...
相关文章
文章评论
共有0条评论来说两句吧...