Spring Boot发送QQ邮件

news2024/9/28 1:21:39

Spring Boot发送QQ邮件

  • 1. 创建Spring Boot项目
  • 2. 引入发邮件的starter
  • 3. 必要配置
  • 4. 编写邮件内容
  • 5. 测试
  • 其他:

Spring Boot简单引入一个包就能轻松发邮件,仅需5分钟就能实现

1. 创建Spring Boot项目

2. 引入发邮件的starter

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>

3. 必要配置

# 配置 smtp 服务器地址
spring.mail.host=smtp.qq.com
# smtp 服务器的端口
spring.mail.port=587

# 根据自己的邮箱配置账号以及授权码
spring.mail.username=110@qq.com
spring.mail.password=********
spring.mail.properties.from=110@qq.com

spring.mail.default-encoding=UTF-8

注:获取授权码
登录QQ邮箱=》设置=》帐户 =》POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务

点击 “服务状态” 后面的 “管理服务”
经过几次手机短信验证后进入下面页面,点击生成授权码即可
在这里插入图片描述

4. 编写邮件内容


@Controller
public class MailController {
    @Autowired
    private JavaMailSenderImpl sender;

    @Value("${spring.mail.properties.from}")
    private String from;
    @Value("${spring.mail.properties.from}")
    private String to;

    @GetMapping("/mail/send")
    public String sendMail() {
        SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
        simpleMailMessage.setFrom(from);
        simpleMailMessage.setTo(to);
        simpleMailMessage.setSubject("spring boot 发送邮件");
        simpleMailMessage.setText("我的第一封邮件!!!");
        sender.send(simpleMailMessage);
        return "success";
    }
}

5. 测试

调用controller发送
在这里插入图片描述

其他:

基础概念:
SMTP 全称为 Simple Mail Transfer Protocol(简单邮件传输协议),它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP 认证要求必须提供账号和密码才能登陆服务器,其设计目的在于避免用户受到垃圾邮件的侵扰。

IMAP 全称为 Internet Message Access Protocol(互联网邮件访问协议),IMAP 允许从邮件服务器上获取邮件的信息、下载邮件等。IMAP 与 POP 类似,都是一种邮件获取协议。

POP3 全称为 Post Office Protocol 3(邮局协议),POP3 支持客户端远程管理服务器端的邮件。POP3 常用于 “离线” 邮件处理,即允许客户端下载服务器邮件,然后服务器上的邮件将会被删除。目前很多 POP3 的邮件服务器只提供下载邮件功能,服务器本身并不删除邮件,这种属于改进版的 POP3 协议。

IMAP 和 POP3 协议有什么不同呢
两者最大的区别在于,IMAP 允许双向通信,即在客户端的操作会反馈到服务器上,例如在客户端收取邮件、标记已读等操作,服务器会跟着同步这些操作。而对于 POP 协议虽然也允许客户端下载服务器邮件,但是在客户端的操作并不会同步到服务器上面的,例如在客户端收取或标记已读邮件,服务器不会同步这些操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/730967.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

学习在外部Python脚本中运行Houdini的Python接口(hou模块)

0. 目标 学习在外部Python脚本&#xff08;而非Houdini编辑器内部&#xff09;使用 hou 。 主要参考Houdini官方文档 Command-Line Scripting 中的【Accessing hou from a Regular Python Shell】部分。我将要点记录在下&#xff1a; 1. 将Houdini的dll加入搜索路径 为了能…

FPGA实验五:信号发生器设计

目录 一、实验目的 二、设计要求 三、实验代码 1.代码原理分析 2.代码设计思路 3.IP核的设计与配置 四、实验结果及分析 1、引脚锁定 2、仿真波形及分析 &#xff08;1&#xff09;关于波形一些指标的介绍 &#xff08;2&#xff09;对波形转换功能的验证 &#xf…

【LeetCode】225. 用队列实现栈

225. 用队列实现栈&#xff08;简单&#xff09; 思路 要使用一个队列来实现栈的功能。 具体来说&#xff0c;实现了以下几个方法&#xff1a; push(int x)&#xff1a;将元素 x 入栈&#xff0c;即将元素 x 插入到队列的末尾。pop()&#xff1a;弹出栈顶元素&#xff0c;即将队…

空天遥感守护自然资源底线,擦亮生态底色

上期介绍了航天宏图采用“空天地”一体化监测监管手段&#xff0c;打造基于“SAR卫星耕地变化遥感智能解译”、 基于“遥感大模型的耕地分类技术”等智慧耕地保护解决方案&#xff0c;本篇文章主要讲述“遥感如何助力自然保护地监测与保护”和“如何助力山水林田湖草沙生态修复…

Spanner: Google的全球分布级数据库----论文摘要

Spanner中一个新奇的time api揭示了时钟的不确定性。该api及其实现对于支持外部一致性&#xff08;外部观察一致性&#xff09;以及一系列强力的特性至关重要&#xff0c;这些特性包括&#xff1a;对过去版本数据的无阻塞读&#xff08;对于历史数据的读不加锁&#xff0c;且不…

密码学入门——DES与AES

文章目录 参考书目一、编码与异或1.1 编码1.2 异或 二、DES与三重DES三、AES 参考书目 图解密码技术&#xff0c;第三版 一、编码与异或 1.1 编码 计算机的操作对象并不是文字&#xff0c;而是由0和1排列而成的比特序列。无论是文字、图像、声音、视频还是程序&#xff0c;…

短视频矩阵管理系统源码开发:视频批量剪辑,分发功能开发示例

短视频矩阵管理系统开发&#xff0c;首先对服务器要求&#xff1a; 源码所需服务器配置 1、规格&#xff1a;最低8核16G 2、硬盘&#xff1a;系统盘40-100G&#xff0c;数据盘不低于100G 3、带宽&#xff1a;10M 4、系统&#xff1a;CentOS7(务必选择7.*) 部署过程中&…

设计模式之结构型模式---代理模式

目录 1.概述2.代理模式类图3.应用场景3.1 功能增强3.2 控制访问 4.实现4.1 静态代理的实现4.1.1 实现静态代理模式的步骤4.1.2 静态代理的缺点 4.2 动态代理的实现4.2.1 Java JDK 动态代理的实现MethodInvocationHandlerProxy 4.2.2 JDK动态代理的使用方法4.2.3 JDK动态代理的实…

本内容由【想发APP】创始人编写:uniAPP申请百度广告后,开发者必须要空包签名验证应用的所有权,实现的详细内容如下

Android获取签名 注意先安装好jdk和jre&#xff0c;然后配置好环境变量 说明 空包签名需要本地配置jdk环境 Windows 安装JDK及环境变量的配置 命令行方式 命令格式&#xff1a; jarsigner -verbose -keystore [签名文件路径] -signedjar [签名后apk的文件路径] [未签名apk的文…

对顶堆学习笔记

对顶堆学习笔记 文章目录 **对顶堆学习笔记**介绍例题洛谷 P1168 中位数code 介绍 对顶堆是由一个大顶堆和一个小顶堆组合而成的数据结构&#xff0c;与传统堆维护最大数不同&#xff0c;对顶堆用于动态维护第k大的数。 对于对顶堆&#xff0c;我们可以用两个优先队列来表示两…

IllegalArgumentException: OnNoRibbonDefaultCondition异常与Maven Helper插件解决jar包冲突

在搭建Spring Cloud项目时&#xff0c;引入了不同版本的jar&#xff0c;导致项目启动时报错: main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.Bea…

Python 制作英文学习词典(简易版)

前言 今日分享 Python 制作英文学习词典&#xff0c;大家都可以尝试。 题目 制作英文学习词典。编写程序制作英文学习词典&#xff0c;词典有3个基本功能&#xff1a;添加、查询和退出。程序读取源文件路径下的txt格式词典文件&#xff0c;若没有就创建一个。词典文件存储方…

arcgis js 4.x加载自定义坐标系的arcgis server发布的wms服务

一、问题描述 一般城市本身用的都是自己定义的城市&#xff08;本地&#xff09;坐标系&#xff0c;没有对应公开的EPSG代码&#xff0c;如下图如果直接加载自定义坐标系的wms服务&#xff0c;直接会报错。 var customProjLayer new WMSLayer({url: "http://10.1.8.37:6…

封装一个带el-form的,带el-table的,带分页的,带搜索查询的dialog组件,很使用的二次封装组件。

#封装dialog小案例 提示&#xff1a;这是我工作中封装的代码&#xff0c;很使用&#xff0c;需要的可以拿去&#xff0c; 在我们的代码中往往会出现点击按钮出现弹窗进行操作&#xff0c;那么我们就需要对dialog进行一个二次封装。 下边是大概的一个样式。 ##对组件进行二次…

C语言中一维数组及二维数组的运用

1、int arr[] {12,3,4,5,6}; int * p arr; int * q &arr[1]; 其中arr是数组名&#xff0c;代表了整个数组的首元素地址&#xff0c;这个是一个常量&#xff0c;放在常量存储区&#xff0c;所以在给int*p赋值的时候可以不用带&&#xff0c;而下面的arr[1]则代表数…

unidbg或者java层解密方法IDEA中打包成jar包供python调用方法

一、导出jar包方法 &#xff08;1&#xff09;配置jar包参数 &#xff08;2&#xff09;创建生成jar包 成功生成&#xff01; 二、Python代码调用 import jpypejvmPath jpype.getDefaultJVMPath() d unidbg-android.jar # 对应jar地址 jpype.startJVM(jvmPath, "-ea&q…

cloudflared tunnel后台启动

前期视频链接 先前台启动&#xff0c;本文参考 cloudflared tunnel --url localhost:88 run ruoyu 或者 cloudflared tunnel --url localhost:88 --no-chunked-encoding run ruoyu找到你的uuid.json 文件 创建你的config.yaml 或config.yml 内容如下 uuid 配置自己的 url: …

创建员工表并按要求完成数据

mysql> create table employee( id int primary key, name varchar(50), gender enum(男,女) default 男, salary int ); Query OK, 0 rows affected (0.01 sec)mysql> mysql> desc employee; ------------------------------------------------------ | Field | T…

spring重点标签有哪些

<bean>标签 id属性:在容器中Bean实例的唯一标识&#xff0c;不允许重复 class属性:要实例化的Bean的全限定名 scope属性:Bean的作用范围&#xff0c;常用是singleton(默认)和prototype <property>标签:属性注入 name属性:属性名称 value属性:注入的普通属性值 ref属…

Perfetto概览

1、Perfetto 简介 Perfetto是谷歌提供的一个用于性能检测和 trace 文件抓取分析的生产级开源工具包。它可以帮助我们进行应用层面以及系统层面的 trace 文件抓取、native/java 内存剖析。它还提供了一个强大的库能够帮助我们在 web 网页上对抓取的trace 文件进行可视化分析&am…