前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringBoot 实现发送简单邮件

SpringBoot 实现发送简单邮件

作者头像
RAIN7
发布2022-09-23 16:13:43
9960
发布2022-09-23 16:13:43
举报
文章被收录于专栏:RAIN7 de 编程之路

文章目录

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项目中使用其中的对象与配置实现邮件服务

代码语言:javascript
复制
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>

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

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

在这里插入图片描述
在这里插入图片描述

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

代码语言:javascript
复制
#一般使用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方法中

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

代码语言:javascript
复制
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、网易使用邮件服务的配置信息

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

在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-08-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • SpringBoot实现发送简单邮件
  • 0、发送邮件的简单原理介绍
  • 1、开启我们发送方邮件的STMP服务
  • 2、加入Mail依赖,使得SpringBoot项目支持邮件服务
  • 3、配置信息,连接邮箱服务器以及STMP服务
  • 4、使用SpringBoot提供的对象使用邮件服务
  • 5、查看运行访问结果
  • 6、网易使用邮件服务的配置信息
相关产品与服务
验证码
腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档