SpringBoot【十二(准备篇)】如何代码实现发送邮件提醒,你一定得会!

一、前言🔥

环境说明:Windows10 + Idea2021.3.2 + Jdk1.8 + SpringBoot 2.3.1.RELEASE

        今天临时接到一个需求,要求bug菌实现一个定时发送邮件的功能,并要求一天搞定。接收到这个需求的第一反应,好家伙,这不是很简单,告诉我发件人收件人邮箱地址等相关信息,我一刻钟就给它搞定,小伙伴们,你们有写过类似发送邮件业务么?如果没有,那可以看看bug菌是怎么实现的吧。

好了,咱们就开始这期的内容吧。

二、准备工作

       先给大家透露下,我会把这个功能点分多篇进行零一教学,目的是为了不造成篇幅太长从而导致小伙伴们视觉疲劳,没有欲望阅读完。所以还请部分小伙伴多担待哈~~~

就以qq邮箱为例给大家做演示吧。

1、开通POP3/SMTP服务

1、如何开通你发送邮箱的POP3/SMTP服务呢?我会教大家的,咱们往下看。

至于为什么开通,我待会给大家演示一下,如果不开通,会出现什么问题?先教大家如何开通,如下是步骤:a->b->c->d->e

a、网页登录qq邮箱,首页点击邮箱设置,然后点击面包屑-账户

b、往下滑,找到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务 ;然后点击POP3 最右边的开启。

c、点击开启会弹出一个框,让你进行短信验证开通。如下:

d、首先提示框先不关,放着,然后你到你的手机端进行短信发送,具体发送内容及发送人我下边已给,大家复制粘贴即可。发送完后,再点击弹框的【我已发送】。

短信内容为:‘配置邮件客户端’

发送至号码:‘1069070069’

e、短信发送成功后,点击完[我已发送],邮箱界面会再次弹出一个窗口,具体展示如下。弹框表示成功开启POP3服务。切记,这串授权码务必拷贝下来,随便找个文档保存好,后边必须要用到它,要不然你还得再申请一个授权码,就会很麻烦啦。

       这个授权码就是我们用来第三方客户端登录的密码,也就是你进行代码发送邮件的关键一环。

2、引入spring-boot-starter-mail 依赖。

       由于Spring推出了关于Mail的JavaMailSender类,基于该类Spring Boot又对其进行了进一步封装,从而实现了轻松发送邮件的集成。而且JavaMailSender类提供了强大的邮件发送能力,支持各种类型的邮件发送。那我们就直接使用Spring Boot提供对mail-starter进行操作吧,后续再扒源码进行深入研究。

       即我们在pom文件中引入该starter-mail依赖即可。

<!--邮件通知-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
</dependency>

3、application-dev.yaml文件配置

       如下是在系统配置文件中配置,如果你使用的是.properties格式的配置文件,那么你就将如下的配置格式改成对应格式即可,比如语法spring.mail.hots = smtp.qq.com 。.yaml改成.properties修改方式为:冒号改成[ . ] 然后值用[ = ]  即可。

       然后是跟我用一样配置文件格式的,你们就直接复制过去,注意两点。

  • 第一,你们active所本地运行的环境是哪个,就把这段配合加到那个环境上面,我是配在dev环境上。
  • 第二,也就是提醒你们要保存下来的那段授权码,对应下边的password。

具体配置如下:仅供参考。

spring:
  mail:
    host: smtp.qq.com  # 配置 smtp 服务器地址
    port: 25   #smtp 服务器的端口
    username: xxxx@qq.com  #配置邮箱用户名;你自己的邮箱
    password: iptxxxxxkbffjbdhg  #配置申请到的授权码;这里填写刚才短信申请到的授权码
    default-encoding: UTF-8   #配置邮件编码
    protocol: smtp   #协议

 按顺序完成如上3个步骤,发送邮件的环境配置就弄完了,磨刀不误砍柴工嘛,接下来我再来回答大家的疑问吧。

三、不开通POP3/SMTP服务会如何?

       我不开通,直接配置完,然后直接写了个test测试类进行邮件发送,报错啦,不是吧?哦吼,原来如此,再执行一遍,真报错啦啊?然后针对报错进行研究。配置文件的password 我一开始就是填的是邮箱号密码,结果就报错,然后根据报错,才反应,qq邮箱指引我要开启该服务。不过,你们也可以试试,这样印象会加深一点。

如下是报错源码:

org.springframework.mail.MailAuthenticationException: Authentication failed;
nested exception is javax.mail.AuthenticationFailedException: 535 Login Fail.
Please enter your authorization code to login.
More information in http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256

 麻烦自己解读一下,哈哈哈,这下就明白了吧,报错肯定是不予推荐,这也是qq邮箱账户的保护机制啦,要不然被窃取到账户密码,随便就能拿来做发送源,你们想想,是不是这样?

... ...

        OK,以上就是这期所有的内容啦,如果有任何问题欢迎评论区批评指正,咱们下期见。

四、附录-邮件属性

       如下是Spring Boot通用配置邮件属性,供大家参考一下。

       以上是spring配置提供对mail的一些配置属性,具体配置的就跟我上边给的那几个主要的属性比较常见,基本就是针对邮件发送这一块业务的话,基本那几个配置属性就够了,其余的,大家也可以自行摸索,因为我也不懂呀🤓,哈哈哈,菜的很真实。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值