相信使用过Spring的众多开发者都知道Spring提供了非常好用的JavaMailSender接口实现邮件发送。在Spring Boot的Starter模块中也为此提供了自动化配置。下面通过实例看看如何在Spring Boot中使用JavaMailSender发送邮件。这里以 QQ邮件 为例
[TOC]
环境/版本一览:
- 开发工具:Intellij IDEA 2018.2.2
- springboot: 2.0.6.RELEASE
- jdk:1.8.0_171
- maven:3.3.9
- spring-boot-starter-mail: 2.0.6.RELEASE
pom.xml
1 | <dependencies> |
application.yml
1 | spring: |
如何获得授权码?
打开我的邮箱,选择设置

选择账户 ,找到服务,点击开启

发送短信,签证成功后既可获得授权码


入门
Test
1 | package com.fatal; |
显示
启动程序测试方法 Chapter22ApplicationTests.sendSimpleMail()

进阶
在上例中,我们通过使用SimpleMailMessage实现了简单的邮件发送,但是实际使用过程中,我们还可能会带上附件、或是使用邮件模块等。这个时候我们就需要使用MimeMessage来设置复杂一些的邮件内容,下面我们就来依次实现一下。下面的例子会以 发送附件 和 嵌入静态资源 为例
Test
1 | package com.fatal; |
这里需要注意的是addInline函数中资源名称==wallpaper==需要与正文中==cid:wallpaper==对应起来。
显示
启动程序测试方法 Chapter22ApplicationTests.sendAttachmentsMail()

注意
如果需要设置替代文本或添加内联元素或附件,则通过构造函数创建适当的MimeMessageHelper,该构造函数采用“multipart”标志。
MimeMessageHelper(MimeMessage mimeMessage)MimeMessageHelper(MimeMessage mimeMessage, boolean multipart)使用第一个构造方法会报错
1
java.lang.IllegalStateException: Not in multipart mode - create an appropriate MimeMessageHelper via a constructor that takes a 'multipart' flag if you need to set alternative texts or add inline elements or attachments.
参考资料
Spring Boot中使用JavaMailSender发送邮件
总结
SpringBoot的知识已经有前辈在我们之前探索了。比较喜欢的博主有:唐亚峰 | Battcn、方志朋的专栏、程序猿DD、纯洁的微笑。对这门技术感兴趣的可以去他们的博客逛逛。谢谢他们的分享~~
以上文章是我用来学习的Demo,都是基于 SpringBoot2.x 版本。
源码地址: https://github.com/ynfatal/springboot2-learning/tree/master/chapter22