使用Spring Boot发送邮件

SpringBoot版本:2.0.3

pom包配置

配置文件

163邮箱配置

spring.mail.host=smtp.163.com #邮箱服务器地址
spring.mail.username=xxx.163.com #用户名
spring.mail.password=ooo #开启POP3之后设置的客户端授权码
spring.mail.default-encoding=UTF-8 #编码
# 超时时间(可选)
spring.mail.properties.mail.smtp.connectiontimeout=5000
spring.mail.properties.mail.smtp.timeout=3000
spring.mail.properties.mail.smtp.writetimeout=5000

126邮箱配置

spring.mail.host=smtp.126.com
spring.mail.username=xxx.126.com
spring.mail.password=ooo #开启POP3之后设置的客户端授权码
spring.mail.default-encoding=UTF-8

qq邮箱配置

spring.mail.host=smtp.qq.com
spring.mail.username=xxx@qq.com
spring.mail.password=ooo #开启POP3之后设置的客户端授权码
spring.mail.default-encoding=UTF-8

1、这里的password不是登录密码,是开启POP3之后设置的客户端授权码
2、 默认端口25,使用465端口时,需要添加配置:
spring.mail.port=465
spring.mail.properties.mail.smtp.ssl.enable=true

JavaMailSender

Spring已经帮我们内置了JavaMailSender,可以直接在项目中引用

简单的文本邮件

富文本邮件

发送富文本邮件需要使用MimeMessageHelper类,MimeMessageHelper支持发送复杂邮件模板,支持文本、附件、HTML、图片等。

发送带图片的邮件

如果需要发送多张图片,可以改变传参方式,使用集合添加多个<img src='cid:rscId'>
helper.addInline(rscId, res);即可实现

单元测试:

结果:
支持图片之类的静态资源文件

这里使用的qq邮箱作为收件人,结果被坑惨了。刚开始收到的邮件都是破图,查看源码发现src也没有没有图片地址,回去看了一波代码,好久之后终于发现破图的原因了:qq邮箱默认把我的图片屏蔽掉了,然后在收件人下方、正文上方有一行黄色的警告,点击信任此邮箱,我的天,终于看见图片了。

发送HTML邮件

单元测试:

结果:
支持HTML邮件

发送带附件的邮件

如果有多个附件,同样可以改变传参方式,使用集合多次调用helper.addAttachment(fileName, file);

单元测试:

结果:
支持发送带附件的邮件

值得一提的是:之前在找图片是破图的时候,发现如果有图片但是没有对应的<img/>,接收到的邮件就会以附件的方式存在

发送失败

邮件发送有着很多的原因,如:配置过程中的端口号/授权码错误、550 DT:SPM主题/内容不规范被当做垃圾邮件、发送过于频繁、网络原因。

163邮箱退信的常见问题

posted @   李白白白白白  阅读(759)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示