当前位置: 首页 > news >正文

Spring Boot邮件发送(powernode CD2207)(内含教训视频+源代码)

Spring Boot邮件发送(powernode CD2207)(内含教训视频+源代码)

教学视频+源代码下载链接地址:https://download.csdn.net/download/weixin_46411355/87452056

目录

  • Spring Boot邮件发送(powernode CD2207)(内含教训视频+源代码)
  • `教学视频+源代码下载链接地址:`[https://download.csdn.net/download/weixin_46411355/87452056](https://download.csdn.net/download/weixin_46411355/87452056)
    • 一、注册并登录163邮箱
    • 二、概述
    • 三、案例实操
      • 3.1 创建一个springboot项目
      • 3.2 application.yml配置文件
      • 3.3 发送普通内容的邮件
      • 3.4 发送复杂内容的邮件

一、注册并登录163邮箱

注册163邮箱
登录163邮箱

在这里插入图片描述
点击继续开启
在这里插入图片描述
手机微信扫描二维码发送短信

在这里插入图片描述
在这里插入图片描述
点击开启
在这里插入图片描述
在这里插入图片描述
手机微信扫描二维码发送短信
在这里插入图片描述
点击“确定”
在这里插入图片描述
在这里插入图片描述

我们使用java程序发送邮件,属于使用第三方客户端发送邮件
使用第三方客户端发送右键也需要先通过认证(登录):
官方客户端认证: 用户名 密码
第三方客户端的认证:用户名 授权码
授权码需要通过发送短信开通指定功能时获取

二、概述

SpringBoot实现邮件功能是非常的方便快捷的,因为SpringBoot默认有starter实现了Mail。
发送邮件应该是网站的必备功能之一,什么注册验证,忘记密码或者是给用户发送营销信息。
最早期的时候我们会使用JavaMail相关api来写发送邮件的相关代码,后来spring推出了JavaMailSender更加简化了邮件发送的过程,在之后springboot对此进行了封装就有了现在的spring-boot-starter-mail

三、案例实操

3.1 创建一个springboot项目

在这里插入图片描述

在这里插入图片描述
这里“输入输出”勾选“Java Mail Sender”
在这里插入图片描述

3.2 application.yml配置文件

spring:# 设置连接邮箱的相关信息mail:host: smtp.163.comusername: fbihackerharryhao@163.compassword: IFLOJXMWEFJTXBYI # 使用授权码

3.3 发送普通内容的邮件

测试类


package com.bjpowernode.springbootmailsending;import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;@SpringBootTest
class SpringbootMailsendingApplicationTests {//注入发送邮件的工具对象@Autowiredprivate JavaMailSender javaMailSender;/*** 发送普通内容的邮件*/@Testvoid contextLoads() {//1.创建邮件对象SimpleMailMessage simpleMailMessage = new SimpleMailMessage();//2.设置邮件的相关信息simpleMailMessage.setFrom("fbihackerharryhao@163.com");//设置邮件的发出方simpleMailMessage.setTo("3541434135@qq.com");//设置邮件的接收方simpleMailMessage.setSubject("这是一封测试邮件");//设置邮件的标题simpleMailMessage.setText("这是邮件的内容");//设置邮件的内容//3.使用工具将邮件对象发出javaMailSender.send(simpleMailMessage);}}

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

3.4 发送复杂内容的邮件

在这里插入图片描述

测试类

  /*** 发送复杂内容的邮件*/@Testpublic void test2() throws MessagingException {//1.创建邮件对象MimeMessage mimeMailMessage = javaMailSender.createMimeMessage();//2.创建邮件的工具来设置邮件的相关属性/*源码:public MimeMessageHelper(MimeMessage mimeMessage, boolean multipart, @Nullable String encoding)throws MessagingException {this(mimeMessage, (multipart ? MULTIPART_MODE_MIXED_RELATED : MULTIPART_MODE_NO), encoding);}参数分析new MimeMessageHelper(mimeMailMessage, true, "utf-8");第一个参数MimeMessage mimeMessage是邮件对象MimeMessage第二个参数boolean multipart是文件是否有多个部分(文本内容、图片等)第三个参数@Nullable String encoding是编码格式,指定了不能为空,必须要设置它。*/MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMailMessage, true, "utf-8");//3.使用该工具 设置发送的邮件的相关属性mimeMessageHelper.setFrom("fbihackerharryhao@163.com");mimeMessageHelper.setTo("3541434135@qq.com");mimeMessageHelper.setSubject("这是一封测试用户的复杂文件");mimeMessageHelper.setText("<h1>这是复杂邮件的文本内容</h1>");/*源码public void addInline(String contentId, File file) throws MessagingException {Assert.notNull(file, "File must not be null");FileDataSource dataSource = new FileDataSource(file);dataSource.setFileTypeMap(getFileTypeMap());addInline(contentId, dataSource);}*///在邮件内容中嵌入指定的图片mimeMessageHelper.addInline("picture",new File("D:\\operation\\hacker.jpg"));//为邮件添加附件/* 源码:public void addAttachment(String attachmentFilename, File file) throws MessagingException {第一个参数 String attachmentFilename附件的名称第二个参数 File file 附件具体的文件*/mimeMessageHelper.addAttachment("附件.txt",new File("D:\\operation\\attachment.txt"));//4.将邮件发出javaMailSender.send(mimeMailMessage);}

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

相关文章:

Spring Boot邮件发送(powernode CD2207)(内含教训视频+源代码)

Spring Boot邮件发送&#xff08;powernode CD2207&#xff09;&#xff08;内含教训视频源代码&#xff09; 教学视频源代码下载链接地址&#xff1a;https://download.csdn.net/download/weixin_46411355/87452056 目录Spring Boot邮件发送&#xff08;powernode CD2207&…...

FortiTalk | “三英论安全”之OT安全热门话题解读

OT安全热门话题解读 在数字化转型时代&#xff0c;OT/IT融合已经成为主旋律&#xff0c;可能很多人还没有意识到“工厂”已经不是以前的“工厂”。从封闭走向互联、从现场走向远程、从手动走向自动&#xff0c;这种变革带来的不仅是便捷和效率&#xff0c;更潜藏着巨大的网络安…...

前端开发:关于diff算法详解

前言 前端开发中&#xff0c;关于JS原生的内容和前端算法相关的内容一直都是前端工作中的核心&#xff0c;不管是在实际的前端业务开发还是前端求职面试&#xff0c;都是非常重要且必备的内容。那么本篇博文来分享一个关于前端开发中必备内容&#xff1a;diff算法&#xff0c;d…...

如何为报表开发工具 FastReport .NET 设置 Apache 2 Web 服务器?

FastReport .NET是一款全功能的Windows Forms、ASP.NET和MVC报表分析解决方案&#xff0c;使用FastReport .NET可以创建独立于应用程序的.NET报表&#xff0c;同时FastReport .Net支持中文、英语等14种语言&#xff0c;可以让你的产品保证真正的国际性。专业版和企业版包括Fast…...

华为OD机试真题JAVA实现【出租车计费】真题+解题思路+代码(20222023)

🔥系列专栏 华为OD机试(JAVA)真题目录汇总华为OD机试(Python)真题目录汇总华为OD机试(C++)真题目录汇总华为OD机试(JavaScript)真题目录汇总文章目录 🔥系列专栏题目输入输出示例一输入输出说明示例二输入输出说明...

MySQL 查看版本的 5 种方法

MySQL 提供了几种用于查看服务器版本的方法&#xff0c;本文给大家做个简单的介绍。 方法一&#xff1a;登录 MySQL 每次通过 mysql 客户端连接服务器之后&#xff0c;都会显示一个欢迎信息&#xff0c;里面包含了服务器的版本&#xff1a; mysql -uroot Enter password: **…...

【软件测试】稳定性测试怎么做,这篇文章彻底讲透了~

稳定性对产品的重要性不言而喻。 而作为质量保障&#xff0c;在稳定性测试方面的探索也在不断演化。记得两年前我们做稳定性测试还是基于恒定的压力&#xff0c;7*24小时长时间运行&#xff0c;关注的指标无非是吞吐量TPS的抖动、响应时间的变化趋势&#xff0c;以及各种资源是…...

Leetcode:198. 打家劫舍、213. 打家劫舍 II、337. 打家劫舍 III(C++)

目录 198. 打家劫舍 问题描述&#xff1a; 实现代码与解析&#xff1a; 动态规划&#xff08;版本一&#xff09;&#xff1a; 原理思路&#xff1a; 动态规划&#xff08;版本二&#xff09;&#xff1a; 原理思路&#xff1a; 213. 打家劫舍 II 问题描述&#xff1a…...

【每日随笔】手指训练 ( 手指训练作用 | 哪些人需要手指训练 | 手指操 | 手指康复训练器材 )

文章目录一、手指训练作用二、哪些人需要手指训练三、手指操四、手指康复训练器材产品需求探索 , 研究下手指训练的市场 , 前景 , 是否可以开发 ; 一、手指训练作用 手指训练作用 : 改善 上肢协调性手眼 协调性训练提高 手指 抓握 能力提高 手指 灵活性提高 上肢运动 准确性 和…...

ATR指标在外汇交易中的另类运用方法

当涉及到外汇交易时&#xff0c;有许多不同的指标可以使用。然而&#xff0c;ATR指标可能是一个被低估的工具&#xff0c;可以帮助您发现有利可图的交易机会。本文将介绍ATR指标是什么&#xff0c;如何使用它来识别价格波动和制定交易策略&#xff0c;以及如何在外汇市场中另辟…...

SQL Server 数据批量导出处理

在实际项目环境中&#xff0c;有时会遇到需要将大量数据&#xff08;这里所指百万级别以上的数据量&#xff09;从一台服务器迁移到另外一台数据库服务器的情况。SQL Server有很多方式可以进行数据迁移&#xff1a;备份还原、导入/导出数据、生成脚本&#xff08;包含数据&…...

虹科分享 | CANopen协议基础知识——LSS服务

CANopen是一种架构在CAN串行总线系统上的高层通讯协议&#xff0c;常被用于嵌入式系统与工业控制领域&#xff0c;包括电机控制、机器人制造、医疗、汽车等多个行业领域。本篇文章将主要介绍CANopen的LSS服务。 一. LSS概述 Layer setting service (LSS)是CANopen的设置服务与…...

JS混淆和解混淆

在今天的数字时代&#xff0c;知识产权和商业机密对于企业的成功非常重要。JavaScript代码可以包含许多敏感信息&#xff0c;例如商业逻辑、客户数据和加密密钥。为了保护这些重要信息&#xff0c;JavaScript混淆和解混淆已经成为一种必要的技术。 什么是JavaScript混淆&#…...

MySQL-数值函数

绝对值函数语法格式&#xff1a;ABS(X)例&#xff1a;查看三个数值的绝对值&#xff08;负的绝对值为它的正整数&#xff0c;0的绝对值为0&#xff0c;正的绝对值为它本身&#xff09;。mysql> select abs(2),abs(-32),abs(-0.5); ----------------------------- | abs(2) |…...

SpringMVC(1)

Web项目:基于HTTP协议&#xff0c;当一个用户从浏览器上面输入URL地址之后&#xff0c;URL能够和我们的程序映射起来&#xff0c;可以让用户的请求触达到后端程序里面&#xff0c;并且根据程序的处理&#xff0c;把结果返回浏览器&#xff1b; Spring MVC要进行学习的内容: 1)连…...

珠海先达MES系统六大功能解决电子组装行业可视化问题

电子组装行业的发展背景&#xff1a; 在日益激烈的市场环境中&#xff0c;降低成本&#xff0c;加快交付周期&#xff0c;提高产品质量已经成为了制造业发展的重要目标。企业关注的是产品的生产周期&#xff0c;客户关注的是产品的质量。如何在企业和消费者达成平衡&#xff0c…...

获取本机的IP地址,看似简单的获取,实则蕴含非常多的操作

这篇文章讲述了PowerJob获取本地IP离奇曲折的经过&#xff0c;以及开放了诸多的可配置参数&#xff0c;打开了我新世界的大窗户。求个关注&#xff0c;求个点赞&#xff0c;求一个评论。 获取地址的操作&#xff0c;本来不应该作为什么重点&#xff0c;但是因为一点小小的意外&…...

【SSM】篇一:初试Spring--Ioc与Bean

文章目录1、Spring2、SpringFramework系统架构3、BeanBean的配置Bean的实例化Bean的生命周期4、依赖注入DIsetter注入和构造器注入依赖自动装配5、集合注入1、Spring Spring地址&#xff1a;https://spring.io Spring技术的优点&#xff1a; Spring家族&#xff08;Spring全家…...

华为OD机试真题Python实现【出租车计费】真题+解题思路+代码(20222023)

🔥系列专栏 华为OD机试(Python)真题目录汇总华为OD机试(JAVA)真题目录汇总华为OD机试(C++)真题目录汇总华为OD机试(JavaScript)真题目录汇总文章目录 🔥系列专栏题目输入输出示例一输入输出说明示例二输入输出说明...

Elasticsearch:如何修改 nested 字段的值

Nested 类型是 object 数据类型的特殊版本&#xff0c;它允许对象数组以一种可以彼此独立查询的方式进行索引。在内部&#xff0c;嵌套对象将数组中的每个对象索引为单独的隐藏文档&#xff0c;这意味着每个嵌套对象都可以使用 nested query 独立于其他对象进行查询。每个 nest…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求&#xff0c;设计一个邮件发奖的小系统&#xff0c; 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天&#xff0c;再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至&#xff0c;这不仅是开发者的盛宴&#xff0c;更是全球数亿苹果用户翘首以盼的科技春晚。今年&#xff0c;苹果依旧为我们带来了全家桶式的系统更新&#xff0c;包括 iOS 26、iPadOS 26…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

&#x1f31f; 什么是 MCP&#xff1f; 模型控制协议 (MCP) 是一种创新的协议&#xff0c;旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议&#xff0c;它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课&#xff0c;做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程&#xff0c;它的核心机制是 Goroutine 协程、Channel 通道&#xff0c;并基于CSP&#xff08;Communicating Sequential Processes&#xff0…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

HTML前端开发:JavaScript 常用事件详解

作为前端开发的核心&#xff0c;JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例&#xff1a; 1. onclick - 点击事件 当元素被单击时触发&#xff08;左键点击&#xff09; button.onclick function() {alert("按钮被点击了&#xff01;&…...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展&#xff0c;越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式&#xff0c;也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建&#xff0c;…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用

文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么&#xff1f;1.1.2 感知机的工作原理 1.2 感知机的简单应用&#xff1a;基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...

TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?

在工业自动化持续演进的今天&#xff0c;通信网络的角色正变得愈发关键。 2025年6月6日&#xff0c;为期三天的华南国际工业博览会在深圳国际会展中心&#xff08;宝安&#xff09;圆满落幕。作为国内工业通信领域的技术型企业&#xff0c;光路科技&#xff08;Fiberroad&…...