您的位置 首页 java

SpringBoot之实现邮件发送

SpringBoot实现邮件发送

代码实现

使用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. Socket Factory接口的类的名称,这个类将被用于创建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方法和明白其参数的含义就可以了

  • tos:收件人地址,可以是一个或者多个
  • subject:标题
  • content:邮件正文,可以是文本或者 Html
  • isHtml:正文是Html,则为true,反之false
  • files:可选:附件,一个或多个都可,将File对象添加到最后一个参数即可
  • 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地址:

    文章来源:智云一二三科技

    文章标题:SpringBoot之实现邮件发送

    文章地址:https://www.zhihuclub.com/193472.shtml

    关于作者: 智云科技

    热门文章

    网站地图