Spring Boot整合发送QQ邮箱功能

1. 创建Spring Boot项目

使用Spring Initializr(https://start.spring.io/)创建一个新的Spring Boot项目,并添加spring-boot-starter-mail依赖。

2. 添加配置

application.propertiesapplication.yml文件中添加QQ邮箱的SMTP配置。这里以application.yml为例:

spring:mail:host: smtp.qq.comport: 465username: your-qq-email@qq.com # 你的QQ邮箱地址password: your-qq-auth-code # 你的QQ邮箱授权码properties:mail:smtp:auth: truestarttls:enable: truerequired: truessl:enable: true

请确保将your-qq-email@qq.comyour-qq-auth-code替换为实际的QQ邮箱地址和授权码。

3. 创建邮件服务

在项目中创建一个名为EmailService.java的类,用于封装邮件发送的逻辑:

package com.example.demo.service;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;import javax.mail.internet.MimeMessage;@Service
public class EmailService {@Autowiredprivate JavaMailSender mailSender;public void sendSimpleEmail(String to, String subject, String content) {MimeMessage mimeMessage = mailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);helper.setFrom("your-qq-email@qq.com"); // 发件人地址helper.setTo(to); // 收件人地址helper.setSubject(subject); // 邮件主题helper.setText(content); // 邮件内容try {mailSender.send(mimeMessage);System.out.println("Email sent successfully.");} catch (Exception e) {System.err.println("Failed to send email: " + e.getMessage());}}
}

同样地,请将your-qq-email@qq.com替换为你的QQ邮箱地址。

4. 调用邮件服务

在Controller或其他需要发送邮件的地方调用EmailServicesendSimpleEmail方法:

package com.example.demo.controller;import com.example.demo.service.EmailService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class EmailController {@Autowiredprivate EmailService emailService;@GetMapping("/send-email")public String sendEmail() {String to = "recipient-email@example.com"; // 收件人邮箱地址String subject = "Test Email from QQ"; // 邮件主题String content = "Hello, this is a test email sent from QQ."; // 邮件内容emailService.sendSimpleEmail(to, subject, content);return "Email sending initiated.";}
}

请将recipient-email@example.com替换为实际的收件人邮箱地址。

5. 运行项目

启动Spring Boot项目,并访问

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

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

相关文章

byzer 笔记总结

1.总览(简单了解) 1.1 数据挖掘的定义 基于大数据技术,针对有价值是业务场景,对数据中台沉淀的大量数据进行探索,分析。寻找数据与数据之间潜藏的关系,转化为自动化的算法模型,从而获取有价值的…

python-jenkins调用流水线设置“丢弃旧的构建”(discard old builds)

背景 Jenkins任务执行,随之构建次数增多,构建日志所占磁盘大小不断增大,需要配置清除策略。 而 discard old builds 就是配置丢弃旧的构建;若是我们使用python-jenkins 调用修改配置该如何设置? 调用设置 这里是按…

在远程服务器上安装虚拟环境

一、Anaconda环境安装 先下载Anaconda Linux版,并将其重命名为anaconda2020.sh wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2020.07-Linux-x86_64.sh --header"User-Agent: Mozilla/5.0 (Windows NT 6.0) AppleWebKit/537.11 (K…

C++ static关键字详解

背景 前段时间初步整理了C中static的相关知识点,以此做个记录。 在C中,static关键字是常见的修饰符。从大方向上static分为两类: 1.类或结构体外的static 2.类或结构体内的static 因此,本文内容的划分如下: 接下来会…

Day07-06_13【CT】LeetCode手撕—1. 两数之和

目录 题目1-思路2- 实现⭐1. 两数之和——题解思路 3- ACM实现 题目 原题连接:1. 两数之和 1-思路 哈希表 利用哈希表存储 key 数组元素值 ——> value 数组下标遍历数组 2- 实现 ⭐1. 两数之和——题解思路 class Solution {public int[] twoSum(int[] nums…

Linux实验八:流式套接字编程

目录 一、实验目的二、实验内容三、实验环境四、参考代码五、实验步骤步骤1. 编辑源代码blockserver.c和blockclient.c步骤2. 编译源代码blockserver.c和blockclient.c步骤3. 运行可执行程序blockserver和blockclient 六、实验结果七、实验总结 一、实验目的 1、深入理解 TCP/…

嵌入式操作系统_3.操作系统内核架构

内核是操作系统的核心部分,它管理着系统的各种资源。内核可以看成连接应用程序和硬件的一座桥梁,是直接运行在硬件上的最基础的软件实体。目前从内核架构来划分,可分为宏内核(Monolithic Kernel)和微内核(M…

网络编程(一)基本概念、TCP协议

文章目录 一、概念(一)网络发展阶段1. ARPAnet阶段2. TCP/IP两个协议阶段3. 网络体系结构和OSI开放系统互联模型4. TCP/IP协议簇体系结构(1) 应用层:(2)传输层:(3&#x…

【STM32】GPIO输出(江科大)

一、GPIO简介 1.GPIO:通用输入输出口 2.可配置为8种输入输出模式 3.引脚电平:0-3.3V(输出最大3.3V),部分引脚可容忍5V(输入,有FT) 4.输出模式下,可控制端口输出高低电平…

网络学习(14)|RESTful API设计:构建优雅的Web服务

文章目录 设计原则最佳实践命名与URI设计状态码与响应格式HTTP状态码详解响应格式选择 在当今的互联网世界中,RESTful API已成为构建可扩展、可维护和高性能Web服务的标准。本文将深入探讨RESTful API的设计原则、资源命名与URI设计的最佳实践,以及请求与…

linux系统宝塔服务器temp文件夹里总是被上传病毒php脚本

目录 简介 上传过程 修复上传漏洞 tmp文件夹总是被上传病毒文件如下图: 简介 服务器时不时的会发送短信说你服务器有病毒, 找到了这个tmp文件, 删除了之后又有了。 确实是有很多人就这么无聊, 每天都攻击你的服务器。 找了很久的原因, 网上也提供了一大堆方法,…

通过语言大模型类学习python,卡哪问哪(一)

代码语法学习,代码解析 import matplotlib.pyplot as plt import numpy as np import PIL import tensorflow as tffrom tensorflow import keras from tensorflow.keras import layers from tensorflow.keras.models import Sequential 一、语法解析 (…

themleaf 页面弹层取值

themleaf 页面弹层取值 创作背景themleaf页面事件onbluronclick 页面参数提交 创作背景 个人在日常开发中,遇到了一个需求页面,页面交互较多,用到的事件也很丰富,特此记录,方便后续查找也方便有需要的开发者采用&…

10 SpringBoot 静态资源访问

我们在开发Web项目的时候,往往会有很多静态资源,如html、图片、css等。那如何向前端返回静态资源呢? 以前做过web开发的同学应该知道,我们以前创建的web工程下面会有一个webapp的目录,我们只要把静态资源放在该目录下…

从零手写实现 nginx-23-nginx 对于 cookie 的操作

前言 大家好,我是老马。很高兴遇到你。 我们为 java 开发者实现了 java 版本的 nginx https://github.com/houbb/nginx4j 如果你想知道 servlet 如何处理的,可以参考我的另一个项目: 手写从零实现简易版 tomcat minicat 手写 nginx 系列 …

信号与系统实验MATLAB-实验2-连续时间系统的时域分析

实验二 连续时间系统的时域分析 一、实验目的 1、掌握连续时间信号卷积及其MATLAB实现方法; 2、掌握连续系统的冲激响应、阶跃响应及其MATLAB实现方法; 3、掌握利用MATLAB求LTI系统响应的方法; 4、掌握利用MATLAB求函数卷积和解微分方程…

网络IO模型:BIO NIO AIO 的区别!!!

BIO是同步阻塞I/O模型,它使用一个线程来处理一个请求,如果这个请求没有被处理完,这个线程就会一直等待,直到请求处理完成。这种模型适用于连接数较小的情况。 NIO是同步非阻塞I/O模型,它使用单个线程来处理多个请求&a…

APM之:卡顿监控

方案一:参考了ANR-WatchDog机制 ANR-WatchDog机制原理不复杂,它内部启动了一个子线程,定时通过主线程Handler发送Message,然后定时去检查Message的处理结果。 通俗来说就是利用了Android系统MessageQueue队列的排队处理特性。 …

学习grdecl文件格式之后的事情

学习了grdecl文件格式,搞地质的专业人士都知道,这是专门用在地质上的油藏软件(个人感觉就是斯伦贝谢的Petrel的)的一种文件格式,正好自己也在学习三维的开发,顺手写了一个简单的读取grdecl算法,…