QQ邮箱发送工具类的实现

我们在日常开发中,需要实现一个对邮箱的发送,今天就实现邮箱的发送工具类,只需要一些注册邮箱之后的配置即可,我这边使用的是qq邮箱

0.加上依赖

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

1.配置yml文件(需要到官网上去注册,不知道怎么获取的可以看视频或者问chatGPT:https://mail.qq.com/QQ邮箱,为亿万用户提供高效稳定便捷的电子邮件服务。你可以在电脑网页、iOS/iPad客户端、及Android客户端上使用它,通过邮件发送3G的超大附件,体验文件中转站、日历、记事本、漂流瓶等特色功能。QQ邮箱,常联系。icon-default.png?t=N7T8https://mail.qq.com/

spring:                         # Spring Boot应用程序配置的根节点mail:                        # 邮件相关配置username:                   # 你自己的QQ邮箱的用户名,需要填写你的QQ邮箱地址password:                   # 你自己的QQ邮箱的密钥/密码,需要填写你的QQ邮箱登录密码host: smtp.qq.com            # SMTP服务器主机名,这里设置为QQ邮箱的SMTP服务器port: 465                   # SMTP服务器端口,通常情况下使用SSL的SMTP协议使用465端口protocol: smtp              # 使用SMTP协议发送邮件properties:                 # 邮件相关的属性配置mail:                     # 邮件协议属性配置smtp:                   # SMTP协议属性配置ssl:                  # SSL/TLS属性配置enable: true         # 启用SSL,表示使用加密传输邮件auth: true             # 启用SMTP身份验证,需要提供用户名和密码starttls:             # STARTTLS属性配置,用于在未加密连接上启用TLSenable: true        # 启用STARTTLSrequired: true      # 要求必须使用STARTTLSsocketFactory:        # Socket工厂属性配置,用于SSL连接port: 465           # SSL连接的端口,与SMTP服务器的端口一致class: javax.net.ssl.SSLSocketFactory  # 使用的Socket工厂类,通常用于SSL连接# 请确保填写你自己的QQ邮箱地址和密码,以及确保QQ邮箱允许使用SMTP服务来发送邮件

2.写一个发送邮箱工具类

@Component
public class MailUtil {private static MailUtil INSTANCE = new MailUtil();@ResourceJavaMailSender mailSender;@ResourceJavaMailSender javaMailSender;@PostConstructpublic void init(){INSTANCE.mailSender = mailSender;}/*** 发送简单邮件** @param subject 主题* @param content 内容* @param from 发件人* @param to      收件人*/public void sendSimpleMail(String subject,String content,String from,String[] to){SimpleMailMessage message = new SimpleMailMessage();message.setFrom(from);message.setTo(to);// 主题message.setSubject(subject);// 邮件正文message.setText(content);message.setSentDate(new Date());// 发送邮件INSTANCE.mailSender.send(message);}public void sendMimeMail(String subject,String content,String from,String[] to) throws MessagingException {MimeMessage mimeMessage = javaMailSender.createMimeMessage();// 构建一个邮件对象MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true);// 设置邮件主题helper.setSubject(subject);// 设置邮件发送者,这个跟application.yml中设置的要一致helper.setFrom(from);helper.setTo(to);// 设置邮件发送日期helper.setSentDate(new Date());// 设置邮件的正文 true:是html文件helper.setText(content,true);// 发送邮件javaMailSender.send(mimeMessage);}}

3.编写controller控制器接口

@RestController
@Api(tags = "邮箱发送")
@RequestMapping("/mail")
public class MailServlet {@Resourceprivate MailUtil mailUtil;@PostMapping("/to")@ApiOperation("发送邮件")@ApiImplicitParams({@ApiImplicitParam(name = "subject", value = "邮件主题"), @ApiImplicitParam(name = "content", value = "邮件内容"), @ApiImplicitParam(name = "from", value = "发送邮件的QQ邮箱"), @ApiImplicitParam(name = "to", value = "要发送到的QQ邮箱,用,隔开")})public R to(String subject, String content, String from, String to) {String[] split = to.split(",");try {mailUtil.sendSimpleMail(subject, content, from, split);return R.ok("发送成功");} catch (Exception e) {e.fillInStackTrace();return R.fail("发送失败");}}@PostMapping("/tof")@ApiOperation("发送富文本邮件")@ApiImplicitParams({@ApiImplicitParam(name = "subject", value = "邮件主题"), @ApiImplicitParam(name = "content", value = "邮件内容<html>格式"), @ApiImplicitParam(name = "from", value = "发送邮件的QQ邮箱"), @ApiImplicitParam(name = "to", value = "要发送到的QQ邮箱,用,隔开")})public R tof(String subject, String content, String from, String to) {String[] split = to.split(",");try {mailUtil.sendMimeMail(subject, content, from, split);return R.ok("发送成功");} catch (Exception e) {e.fillInStackTrace();return R.fail("发送失败");}}
}

最后就可以发送邮箱了,今天的分享就到这里了

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

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

相关文章

基于vue开发 - 编写登录页面样式

vue创建项目&#xff0c;使用可视化界面安装插件-CSDN博客 使用vue UI安装路由插件-CSDN博客 基于vue开发-创建登录页-CSDN博客 在src/views文件夹中创建登录页面login.vue&#xff0c;在router/index.js文件中加入登录页的路由&#xff0c;然后在浏览器中输入登录页的路径就…

FL Studio终身永久2024中文版下载安装详细操作图文步骤教程

FL Studio2024版是一款在国内非常受欢迎的多功能音频处理软件&#xff0c;我们可以通过这款软件来对多种不同格式的音频文件来进行编辑处理。而且FL Studio 2024版还为用户们准备了超多的音乐乐器伴奏&#xff0c;我们可以直接一键调取自己需要的音调。 FL Studio 2024版不仅拥…

算法设计基础——综合

算法设计基础中最基础的几种算法&#xff1a;分治法、减治法、贪心法、动态规划法、回溯法基本都掌握后&#xff0c;我们现在可以对这些算法做整体的比较&#xff0c;本次实验使用蛮力法、动态规划法、回溯法来求解0/1背包问题&#xff0c;来比较各个算法的优劣。 1. 蛮力法 …

代码随想录27期|Python|Day16|二叉树|104.二叉树的最大深度|111.二叉树的最小深度|222.完全二叉树的节点个数

二叉树专题&#xff0c;重点掌握后续的递归和中间节点的处理。 104. 二叉树的最大深度 - 力扣&#xff08;LeetCode&#xff09; 本题在前一章已经解决了层序遍历的解法&#xff0c;现在来聊一下递归法。 首先需要明确两个概念&#xff1a;深度和高度。&#xff08;注意&…

抠图软件哪个好用?什么软件可以抠图换背景?

抠图软件哪个好用&#xff1f;在图片处理中&#xff0c;抠图换背景是一项常见的操作。很多新手可能会对此感到困惑&#xff0c;不知道应该使用什么软件来进行抠图换景。实际上&#xff0c;现在市面上有很多图片处理软件都具备抠图换背景的功能&#xff0c;每款软件都有其优缺点…

LVS负载均衡群集部署 DR模式

目录 DR模式直接路由 LVS-DR工作原理 LVS-DR 数据包流向分析 DR 模式的特点 DR模式 LVS负载均衡群集部署 DR模式直接路由 Direct Routing&#xff0c;简称DR模式&#xff0c;采用半开放式的网络结构&#xff0c;与TUN模式的结构类似&#xff0c;但各节点并不是分散在各地…

c语言链表的基本操作

在C语言中&#xff0c;链表是一种常见的数据结构&#xff0c;它由一系列节点组成&#xff0c;每个节点包含一个数据元素和一个指向下一个节点的指针。链表的基本操作包括创建、插入、删除和遍历等。 下面是一个简单的链表节点结构体定义&#xff1a; struct Node { int da…

Python实现员工管理系统(Django页面版 ) 六

本篇博客主要实现用户账号管理&#xff0c;这与之前的账号管理不同&#xff0c;之前的账号管理你可以理解为公司在外面买的一些手机号然后需要发放给员工做内部使用&#xff0c;而本篇博客的用户账号管理主要是为了后续的登录网页实现&#xff0c;那么我们开始今天的项目实现吧…

2. 套圈(分治)

题目 Have you ever played quoit in a playground? Quoit is a game in which flat rings are pitched at some toys, with all the toys encircled awarded. In the field of Cyberground, the position of each toy is fixed, and the ring is carefully designed so it c…

搭建消息时光机:深入探究RabbitMQ_recent_history_exchange在Spring Boot中的应用【RabbitMQ实战 二】

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 搭建消息时光机&#xff1a;深入探究RabbitMQ_recent_history_exchange在Spring Boot中的应用 引言前言第一&#xff1a;开启插件支持第二&#xff1a;springboot整合第三&#xff1a;效果展示交换机属…

locust 压测 websocket

* 安装 python 3.8 https://www.python.org/ py --version * 安装 locust pip install locust2.5.1 -i http://pypi.douban.com/simple/ pip install locust2.5.1 -i https://pypi.mirrors.ustc.edu.cn/simple/ locust -V 备注&#xff1a;-i 是切换下载源 * 安装依赖 pip ins…

Electron框架:构建跨平台桌面应用的终极解决方案

文章目录 一、Electron框架简介二、Electron框架的优势1. 开发效率高2. 跨平台性能好3. 易于维护4. 强大的原生能力 三、如何使用Electron框架快速开发跨平台桌面应用1. 安装Electron2. 创建项目文件夹3. 编写主进程代码4. 编写界面代码5. 运行应用 《Electron入门与实战》编辑…

《软件方法》2023版1.1利润=需求-设计1.2 ABCD工作流

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 第1章 建模和UML 牵着你走进傍晚的风里&#xff0c;看见万家灯火下面平凡的秘密。 《情歌唱晚》&#xff1b;词&#xff1a;黄群&#xff0c;曲&#xff1a;黄群&#xff0c;唱&#…

word文档实现“目录索引中标题加粗、前导符(...)和页码不加粗”效果

文章目录 1 展示论文模板需要呈现的效果2 所遇到的问题2.1 情形1&#xff1a;当更新整个目录后&#xff0c;目录中的所有文字都不加粗2.2 情形2&#xff1a;无法单独选中文字部分&#xff0c;如果相对文字部分加粗&#xff0c;则前导符和页码也会同时加粗 3 解决步骤3.1 步骤1&…

CIDR(无类域间路由)与VLSM(可变长度子网掩码)的区别

CIDR和VLSM的介绍 CIDR CIDR&#xff08;Classless Inter-Domain Routing&#xff0c;无类域间路由&#xff09;是一种用于对互联网协议&#xff08;IP&#xff09;地址进行聚合和分配的标准。CIDR的引入旨在解决IPv4地址空间的不足和低效分配的问题。在传统的IP地址规划中&a…

关键点检测之修改labelme标注的json中类别名

import json import os import shutil#source_dir表示数据扩增之后的文件夹路径&#xff0c;此时标注的是多分类的标签 #new_dir表示转化之后得到的二分类文件夹def to2class():#json存放路径source_dir r1#json保存路径new_dir r1for i in os.listdir(source_dir):if i.ends…

文本聚类——文本相似度(聚类算法基本概念)

一、文本相似度 1. 度量指标&#xff1a; 两个文本对象之间的相似度两个文本集合之间的相似度文本对象与集合之间的相似度 2. 样本间的相似度 基于距离的度量&#xff1a; 欧氏距离 曼哈顿距离 切比雪夫距离 闵可夫斯基距离 马氏距离 杰卡德距离 基于夹角余弦的度量 公式…

银行数字化转型导师坚鹏:银行数字化转型正在重塑您的工作

您好&#xff0c;我是银行数字化转型导师坚鹏。坚持知行果合一&#xff0c;赋能数字化转型&#xff01;非常荣幸和您分享关于银行数字化转型如何影响老百姓工作的一些思考。 您知道吗&#xff1f;银行数字化转型给您的工作方式带来新变化、新趋势、新潮流啦&#xff01;在这个…

一分钟解决:vscode卡在“设置SSH主机:VS Code-正在本地下载 VS Code 服务器”

问题&#xff1a;vscode之前可正常使用&#xff0c;更新之后&#xff0c;连接服务器卡住了。 解决&#xff1a;从CMD或者你的终端连接服务器&#xff0c;进入vscode-server目录下&#xff0c;删除一些文件夹就行&#xff0c;然后使用vscode重新链接&#xff0c;它会自动下载新…

系列七、函数

一、函数 1.1、概述 函数 是指一段可以直接被另一段程序调用的程序或代码。 也就意味着&#xff0c;这一段程序或代码MySQL中已经为我们提供好了&#xff0c;我们要做的就是在合适的业务场景调用对应的函数完成相应的业务需求即可。 1.2、分类 按照业务分类&#xff0c;MySQL中…