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.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>

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

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 "邮件发送成功";


    }

5、查看运行访问结果


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


在这里插入图片描述


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


在这里插入图片描述


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


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

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340