Springboot系列(十二):如何代码实现发送邮件提醒,你一定得会!(准备篇)

2,329 阅读7分钟

👨‍🎓作者:bug菌
✏️博客:CSDN掘金infoQ51CTO
🎉简介:CSDN博客专家,C站历届博客之星Top50,掘金/InfoQ/51CTO等社区优质创作者,全网合计8w粉+,对一切技术感兴趣,重心偏Java方向;硬核公众号「 猿圈奇妙屋」,欢迎小伙伴们的加入,一起秃头,一起变强。
...
✍️温馨提醒:本文字数:1999字, 阅读完需:约 5 分钟

      嗨,家人们,我是bug菌呀,我又来啦。今天我们来聊点什么咧,OK,接着为大家更《springboot零基础入门教学》系列文章吧。希望能帮助更多的初学者们快速入门!

      小伙伴们在批阅文章的过程中如果觉得文章对您有一丝丝帮助,还请别吝啬您手里的赞呀,大胆的把文章点亮👍吧,您的点赞三连(收藏⭐+关注👨‍🎓+留言📃)就是对bug菌我创作道路上最好的鼓励与支持😘。时光不弃🏃🏻‍♀️,创作不停💕,加油☘️

一、前言🔥

环境说明: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的一些配置属性,具体配置的就跟我上边给的那几个主要的属性比较常见,基本就是针对邮件发送这一块业务的话,基本那几个配置属性就够了,其余的,大家也可以自行摸索,因为我也不懂呀🤓,哈哈哈,菜的很真实。

五、往期热门推荐

文末🔥

如果还想要学习更多,小伙伴们可关注bug菌专门为大家创建的专栏《springboot零基础入门教学》,从无到有,从零到一!希望能帮助到更多小伙伴们。

我是bug菌,一名想走👣出大山改变命运的程序猿。接下来的路还很长,都等待着我们去突破、去挑战。来吧,小伙伴们,我们一起加油!未来皆可期,fighting!

感谢认真读完我博客的铁子萌,在这里呢送给大家一句话,不管你是在职还是在读,绝对终身受用。
时刻警醒自己:
抱怨没有用,一切靠自己;
想要过更好的生活,那就要逼着自己变的更强,生活加油!!!