网站首页 > java教程 正文
SpringBoot实现邮件发送
在Java中发送邮件主要依赖的包是Javax.mail,但是其操作很繁琐,我们使用对javax.mail进行了封装的Hutool的邮件工具MailUtil,但是因为Javax.mail是第三方包,需要添加此依赖
代码实现
使用Hutool时,对所有的第三方依赖都是可选的,因此在使用Hutool进行邮件发送时需要引入第三方依赖
添加Hutool和 javax.mail依赖
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.5.7</version>
</dependency>
邮件服务器配置
在Maven项目中的src/main/resources目录下添加config目录,然后新建mail.setting文件,然后进行配置。QQ邮箱SSL方式进行邮件发送的配置示例
# 邮件服务器的SMTP地址
host = smtp.qq.com
# 邮件服务器的SMTP端口
port = 465
# 发件人(必须正确,否则发送失败)
from = XXXXXXXX@qq.com
# 用户名(注意:如果使用foxmail邮箱,此处user为qq号)
user = XXXXXXXXX
# 密码(注意,某些邮箱需要为SMTP服务单独设置密码,详情查看相关帮助)
pass = XXXXXXXXXX
#使用 STARTTLS安全连接,STARTTLS是对纯文本通信协议的扩展。
starttlsEnable = true
# 使用SSL安全连接
sslEnable = true
# 指定实现javax.net.SocketFactory接口的类的名称,这个类将被用于创建SMTP的套接字
socketFactoryClass = javax.net.ssl.SSLSocketFactory
# 如果设置为true,未能创建一个套接字使用指定的套接字工厂类将导致使用java.net.Socket创建的套接字类, 默认值为true
socketFactoryFallback = true
# 指定的端口连接到在使用指定的套接字工厂。如果没有设置,将使用默认端口456
socketFactoryPort = 465
# SMTP超时时长,单位毫秒,缺省值不超时
timeout = 0
# Socket连接超时值,单位毫秒,缺省值不超时
connectionTimeout = 0
邮件发送
1.发送普通文本邮件
//收件人
ArrayList<String> tos = CollUtil.newArrayList(
"XXXXXXXX@qq.com");
MailUtil.send(tos,"公司Offer","欢迎你的到了",false);
使用Hutool封装过的MailUtil进行发送邮件发出简单,只需要一个send方法和明白其参数的含义就可以了
2.使用Html格式进行发送
//收件人
ArrayList<String> tos = CollUtil.newArrayList(
"XXXXXXXX@qq.com");
//使用Html格式发送邮件
MailUtil.send(tos,"公司Offer","<h1 style='color:red'>欢迎你的到来</h1>",true);
3.发送邮件带有附件和抄送人
//收件人
ArrayList<String> tos = CollUtil.newArrayList(
"825505212@qq.com");
//抄送人
ArrayList<String> ccs = CollUtil.newArrayList(
"zbbhnsfduyjs@gmail.com");
//谜抄,就是收件人看不见该抄送人
ArrayList<String> bcss = CollUtil.newArrayList(
"zbbhnsfduyjs@gmail.com");
MailUtil.send(tos,ccs,bcss, "公司Offer", "欢迎你的到了!", false, FileUtil.file("D:\\微信图片_20201206221537.jpg"));
自定义邮件发送
除了使用mail.setting配置文件进行配置以外,还可以使用MailAccount对象进行配置,然后传入MailUtil.Send。
MailAccount mailAccount = new MailAccount();
mailAccount.setHost("smtp.qq.com");
mailAccount.setPort(465);
mailAccount.setFrom("XXXXXXX@qq.com");
mailAccount.setUser("XXXXXXX");
mailAccount.setPass("XXXXXXX");
mailAccount.setStarttlsEnable(true);
mailAccount.setSslEnable(true);
mailAccount.setSocketFactoryClass("javax.net.ssl.SSLSocketFactory");
mailAccount.setSocketFactoryFallback(true);
mailAccount.setSocketFactoryPort(465);
mailAccount.setTimeout(0);
mailAccount.setConnectionTimeout(0);
mailAccount.setAuth(true);
MailUtil.send(mailAccount,tos,"公司Offer","<h1 style='color:red'>欢迎你的到来</h1>",true);
注:QQ和Gmail邮箱的时候,是强制开启SSL的,因此才有了以SSL配置QQ的示例。pass:QQ的SSL方法发送邮件的密码不是你的登录密码。
针对QQ邮箱说明
在QQ邮箱中SMTP密码是单独生成的授权码,不是QQ密码,具体生成如下
针对Foxmail邮箱说明
在Hutool中user属性默认提取你邮箱@前面的部分,但是foxmail邮箱是无效的,需要单独配置为与之绑定的qq号码或者XXXX@qq.com的XXXX。即:
host = smtp.qq.com
from = XXXX@foxmail.com
user = foxmail邮箱对应的QQ号码或者qq邮箱@前面部分
总结:
今天以QQ邮箱发送邮件为例介绍了,如何使用Hutool下的MailUtil工具进行,邮件发送,以及邮件发送的文件配置。
喜欢我的可以进行关注,谢谢
github地址:https://github.com/bangbangzhou/greemes/tree/master
猜你喜欢
- 2024-09-14 SpringBoot发送简单文本邮件(springboot 发送邮件)
- 2024-09-14 Github 大牛封装 Python 代码,实现自动发送邮件只需三行代码
- 2024-09-14 Java定时发送Email(带Excel附件)(java怎么实现定时任务)
- 2024-09-14 Spring Boot 邮件发送的 5 种姿势
- 2024-09-14 SpringBoot优雅地发送邮件(springboot发送邮件的步骤)
- 2024-09-14 Spring boot 发送邮件及原理(springboot发送outlook邮件)
- 2024-09-14 10分钟搞定Java实现邮箱验证,坦率讲,别被他人割韭菜
- 2024-09-14 25、springboot发送邮件(springboot email)
- 2024-09-14 SpringBoot邮件发送示例(springboot 邮件)
- 2024-09-14 使用spring boot 发送邮件(springboot发送outlook邮件)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)