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. Python-包与常用模块(2)

    目录 包 导入包内包 相对导入和绝对导入 注意事项 time模块 datetime模块 random模块 argparse 模块 configparser模块 hashlib模块和hmac模块 typ ...

  2. LUOGU P1438 无聊的数列 (差分+线段树)

    传送门 解题思路 区间加等差数列+单点询问,用差分+线段树解决,线段树里维护的就是差分数组,区间加等差数列相当于在差分序列中l位置处+首项的值,r+1位置处-末项的值,中间加公差的值,然后单点询问就相 ...

  3. Mysql自带查询阻塞语句

    select r.trx_id waiting_trx_id, r.trx_mysql_thread_Id waiting_thread, r.trx_query waiting_query, b.t ...

  4. hdu 4563

    hdu 4563 把每个命令走的距离抽象成完全背包 枚举最后一个不是整点走完的命令 #include <iostream> #include <algorithm> #incl ...

  5. 大数据、AI“武装”企业服务:风控、检索、安全

    大数据.AI“武装”企业服务:风控.检索.安全 小饭桌创业课堂2017-05-06 15:26:42阅读(127)评论(0) + - 文|吴杨可月 - - 小饭桌创业研究院出品 - 两件秘闻,将美国大 ...

  6. 查询sitemap中重复的记录

    ; ;

  7. 定时ping取返回值并绘图

    figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...

  8. ElasticSearch入门介绍之会当凌绝顶(一)

    ElasticSearch也是一款非常优秀的开源的全文检索框架,以大名鼎鼎的Apache Lucene为基础,高度封装了更丰富,易用的API,同时与Apache Solr一样,提供了非常强大的分布式集 ...

  9. linux支持大容量硬盘

    1.fdisk使用msdos格式分区,最大支持2T硬盘,要使用大于2T硬盘需使用parted命令使用GPT格式分区. 2.除修改分区格式外,linux内核需添加GPT分区格式支持,修改如下: CONF ...

  10. O(N)求出1~n逆元

    这是一个黑科技. 可以将某些题目硬生生地压到O(N) 不过这求的是1~n的逆元,多了不行-- 结论 接下来放式子: inv[i]=(M-M/i)*inv[M%i]%M; 用数学方法来表示: i−1=( ...