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;
}

可见里面实际是将我们传入的参数作为数组来接受的,因此我们可以以下面的两种形式来将邮件发送给多个接收者:

  1. 数组。
  2. 多个参数。
        // 邮件接受者
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邮件功能的更多相关文章

  1. Spring Boot 邮件发送的 5 种姿势!

    邮件发送其实是一个非常常见的需求,用户注册,找回密码等地方,都会用到,使用 JavaSE 代码发送邮件,步骤还是挺繁琐的,Spring Boot 中对于邮件发送,提供了相关的自动化配置类,使得邮件发送 ...

  2. Spring Boot (十二): Spring Boot 邮件服务

    最早我们发邮件的时候是使用 JavaMail 来发送邮件,而在 Spring Boot 中, Spring Boot 帮我们将 JavaMail 封装好了,是可以直接拿来使用的. 1. 依赖文件 po ...

  3. Spring Boot 邮件配置

    ######################################################## spring boot mail tls ###################### ...

  4. Spring Boot常用功能

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

  5. Spring Boot 邮件发送

    pom文件依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...

  6. spring boot 邮件服务

    引入依赖 添加spring-boot-starter-mail包引用 <dependency> <groupId>org.springframework.boot</gr ...

  7. spring boot 邮件发送(带附件)

    首先开启QQ邮箱的POP.SMTP服务器,获取授权码. 设置-->账户-->POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务 pom.xml需要加载三个ja ...

  8. Spring Boot Mail 实现邮件发送

    此 demo 主要演示了 Spring Boot 如何整合邮件功能,包括发送简单文本邮件. 邮件服务在开发中非常常见,比如用邮件注册账号.邮件作为找回密码的途径.用于订阅内容定期邮件推送等等,下面就简 ...

  9. Springboot 系列(十七)迅速使用 Spring Boot Admin 监控你的 Spring Boot 程序,支持异常邮件通知

    1. Spring Boot Admin 是什么 Spring Boot Admin 是由 codecentric 组织开发的开源项目,使用 Spring Boot Admin 可以管理和监控你的 S ...

随机推荐

  1. 通过挂钩NtCreateSection监控可执行模块

    通过挂钩 NtCreateSection 监控可执行模块 在 Win32 中,我们使用 CreateFileMapping 来创建映射文件对象,函数原型如下: HANDLE CreateFileMap ...

  2. 反编译之dex2jar工具

    1.下载地址https://sourceforge.net/projects/dex2jar/files/?source=navbar bat是Windows系统使用,sh是mac系统使用!

  3. R语言数据预处理

    R语言数据预处理 一.日期时间.字符串的处理 日期 Date: 日期类,年与日 POSIXct: 日期时间类,精确到秒,用数字表示 POSIXlt: 日期时间类,精确到秒,用列表表示 Sys.date ...

  4. PAT甲级——A1105 Spiral Matrix【25】

    This time your job is to fill a sequence of N positive integers into a spiral matrix in non-increasi ...

  5. axis2开发webservice接口入门到精通详解(转)

    最近在开发接口,在网上发现了两篇不错的文章,给大家分享下: 第一篇: 一.Axis2的下载和安装 1.可从http://ws.apache.org/axis2/ 下载Axis2的最新版本:      ...

  6. MyBatis注解开发-@Insert和@InsertProvider(转)

    @Insert和@InsertProvider都是用来在实体类的Mapper类里注解保存方法的SQL语句.不同的是,@Insert是直接配置SQL语句,而@InsertProvider则是通过SQL工 ...

  7. <每日一题>题目10:求斐波拉契数列

    def func(x): m,n = 0,1 i = 0 while i < x: yield m m,n = n,m+n i += 1 fib = [] get_func = func(100 ...

  8. Unity IoC Base On MVC

    Unity框架,是一个经典的IoC模式实现方式,其通过config文件配置section,将接口与实现解藕,config中的section配置的container以全名称对应,使得应用程序无需像Nin ...

  9. springMVC dubbo注解无效,service层返回空指针

    出现空指针的原因是:spring mvc扫描的时候根本无法识别@Reference ,同一方面,dubbo的扫描也无法识别Spring @Controller ,所以两个扫描的顺序要排列好,  如果先 ...

  10. Ubuntu安装CUDA9.2(不更新驱动)

    1.先装驱动,以为安装CUDA时安装最新驱动导致CUDA用不了 sudo apt-get install nvidia-396 2.参考这,安装好CUDA 9.2 https://developer. ...