• SpringBoot 实现发送简单邮件


    SpringBoot实现发送简单邮件


    0、发送邮件的简单原理介绍


    首先我们得了解几个概念,在去写代码

    不管是网易邮箱 还是 qq邮箱,都有以下几个服务


    POP3、SMTP和IMAP

    就简单介绍:邮箱客户端通过 SMTP服务器实现邮件的传输、POP3与IMAP服务器实现邮件的收

    举一个例子


    当我们在qq邮箱写好邮件内容,点击发送。此时mail客户端会将邮件的信息发送给邮件服务器上的 SMTP Service


    这里发送又有两种情况


    一种是收信人也是qq邮箱,只需要转发给本地的 POP3 Service

    一种是收信人是网易163邮箱,需要查询dns,找到对应网易邮件服务的 STMP服务器,两边服务器通过SMTP(简单邮件传输协议)进行传输邮件,网易邮箱解析邮件,再由POP3服务器进行接收邮件


    在这里插入图片描述


    而 我们写代码需要完成什么呢?


    以我们发送邮件方是 qq邮箱为例


    (1)连接qq邮箱服务器,连接STMP服务端口,确定发送方能够发送邮件(手动开启STMP服务,获取授权码)


    (2)构造 SimpleEamilMessage 邮件对象,通过springboot-mail 提供的对象 JavaMailSender 发送邮件


      我们只需要发邮件需要做的事情,发送的对象不限于 同种邮箱或者其他邮箱,这些不需要我们关心,后续提供发送方邮箱地址,能发给qq邮箱,也能发送给网易邮箱


    在这里插入图片描述


    1、开启我们发送方邮件的STMP服务


    通过我们发送方邮件的设置中开启STMP服务


    在这里插入图片描述


    开启时候获取授权码,相当于我们邮箱发送服务的密码


    在这里插入图片描述


    2、加入Mail依赖,使得SpringBoot项目支持邮件服务


    必须在pom.xml 加入依赖,我们才能在springboot项目中使用其中的对象与配置实现邮件服务


            <dependency>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-starter-mailartifactId>
            dependency>
    
    • 1
    • 2
    • 3
    • 4

    3、配置信息,连接邮箱服务器以及STMP服务


    qq邮箱提供的服务器地址及端口号,使用587,测试过465暂时无法发送


    在这里插入图片描述


    在application.properties 资源文件中填入连接邮件服务器、提供端口号、发送方邮件地址、发送方STMP授权码

    #一般使用SMTP服务器 简单邮件传输协议进行发送邮件
    spring.mail.host=smtp.qq.com
    #端口号
    spring.mail.port=465
    #发送邮件的邮箱地址:改成自己的邮箱
    spring.mail.username=2745131427@qq.com
    #发送短信后它给你的授权码 填写到这里
    spring.mail.password=hbpwiyxjcurgdgff
    #与发件邮箱一致qq.com,用于之后的字符串替换
    spring.mail.from=2745131427@qq.com
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    4、使用SpringBoot提供的对象使用邮件服务


    JavaMailSender 这个类中的send方法实现发送邮件对象,相当于从发送方的邮箱点击发送的效果

    SimpleMessage 这个类通过一些set方法,构造出一个较为完整的邮件对象,最后作为参数填入send方法中

    写一个接口,实现发送有限的服务,我们在邮件中随便填入一些文本信息即可

    package com.study.controller;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.mail.SimpleMailMessage;
    import org.springframework.mail.javamail.JavaMailSender;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class EmailSendController {
        
        @Autowired
        public JavaMailSender javaMailSender;// 从容器中拿到 邮件发送对象
    
        @Value("${spring.mail.from}")
        private String emailFrom;// 从资源文件中进行读取发送方的邮件地址
    
        @RequestMapping("/email")
        public String send(String To){
            // new一个 简单邮件对象
            SimpleMailMessage mail = new SimpleMailMessage();
    
            // 设置邮件对象的各个属性,构造成一个较为完整的邮件对象
            mail.setFrom(emailFrom);// 发邮件的邮箱地址,从资源可直接提取
            mail.setTo(To);// 给谁发,通过参数进行传递
            mail.setText("您的验证码是:"+"123456");// 设置邮件的文本内容
            mail.setSubject("注册验证码");// 设置邮件的主题
    
            javaMailSender.send(mail);// 进行发送
    
            return "邮件发送成功";
    
    
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

    5、查看运行访问结果


    访问后端接口,查看结果,返回邮件发送成功


    在这里插入图片描述


      同时接收方网易邮箱(To提供的参数),接收到了来自发送方From发来的SimpleMailMessage,解析得到对应的邮件内容


    在这里插入图片描述


    6、网易使用邮件服务的配置信息


    网易邮箱服务器的各种服务地址、端口号

    在这里插入图片描述

  • 相关阅读:
    jq获取和设置偏移量:offset()、position()
    Istio资源监听原理
    企业办公安全隐患不容忽视,墨门云终端安全来解决...
    HTML如何制作公司网站首页(web前端期末大作业)
    数据结构(七)约瑟夫问题
    kafka+zookeeper群集
    Request和Response原理与详细运用
    电脑照片尺寸如何调整成自己想要的
    智源AI日报(2022-08-30): 华为谢凌曦:关于视觉识别领域发展的个人观点
    TensorFlow实战教程(二十四)-基于BiLSTM-CRF的医学命名实体识别研究(上)数据预处理
  • 原文地址:https://blog.csdn.net/rain67/article/details/126491348