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

邮箱发送短信的多种方式

第一种:邮箱验证方法:

导入依赖:

<!--       mail依赖(发送短信的依赖)     --><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId>
<!--            <version>3.1.5</version>--></dependency>
<!--        thymeleaf 依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId>
<!--            <version>3.1.5</version>--></dependency>

代码的实现

创建一个application.yml 文件

小提示:

一般用邮箱发送短信用 QQ 邮箱;(163 邮箱会过滤掉垃圾文件),所以 QQ 文件比较稳定

spring:mail:#邮件服务器地址host: smtp.qq.com#协议protocol: smtp#编码格式default-encoding: utf-8#授权码password: jhgqhedbdyvcdhdj#邮箱名称username: 2929119150@qq.com#端口号port: 587

实现的代码

 //邮箱相关的配置(内容,收件人,等附件信息)@Resourceprivate JavaMailSender javaMailSender;//邮箱相关的配置(邮箱服务主机名称,端口等)@Resourceprivate MailProperties mailProperties;//模版@Resourceprivate TemplateEngine templateEngine;public void EmailTopicListener(TEmployee tEmployee){System.out.println("获取的结果:"+tEmployee);/*** 业务内容*/MimeMessage mimeMessage = javaMailSender.createMimeMessage();MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage);//添加内容try {//发件人mimeMessageHelper.setFrom(mailProperties.getUsername());System.out.println("发件人:"+mailProperties.getUsername());//收件人mimeMessageHelper.setTo(tEmployee.getEmail());//主题mimeMessageHelper.setSubject("入职欢迎邮件");//发送日期mimeMessageHelper.setSentDate(new Date());//邮箱页面模板(thymeleaf模版)Context context =new Context();context.setVariable("name",tEmployee.getName());context.setVariable("posName",tEmployee.gettPosition().getName());context.setVariable("joblevelName",tEmployee.gettJoblevel().getName());context.setVariable("departmentName",tEmployee.gettDepartment().getName());String email = templateEngine.process("mail", context);//邮件内容mimeMessageHelper.setText(email,true);//发送邮件javaMailSender.send(mimeMessage);} catch (MessagingException e) {throw new RuntimeException(e);}

第二种:邮箱验证方法

导入依赖:

<!--邮箱--><dependency><groupId>com.sun.mail</groupId><artifactId>javax.mail</artifactId><version>1.6.2</version></dependency><dependency><groupId>javax.activation</groupId><artifactId>activation</artifactId><version>1.1.1</version></dependency>

代码的实现:

  // 收件人电子邮箱String to = toEail;// 发件人电子邮箱String from = "2929119150@qq.com";// 生成的授权码String password = "jhgqhedbdyvcdhdj";// 指定发送邮件的主机为 smtp.qq.comString host = "smtp.qq.com";  //QQ 邮件服务器// 获取系统属性Properties properties = System.getProperties();// 设置邮件服务器properties.setProperty("mail.smtp.host", host);properties.put("mail.smtp.auth", "true");// 获取默认的 Session 对象。// 获取默认session对象Session session = Session.getDefaultInstance(properties,new Authenticator(){public PasswordAuthentication getPasswordAuthentication(){return new PasswordAuthentication(from, password); //发件人邮件用户名、授权码}});// 设置debug模式便于调试:
//        session.setDebug(true);try{// 创建默认的 MimeMessage 对象。MimeMessage message = new MimeMessage(session);// Set From: 头部头字段message.setFrom(new InternetAddress(from));// Set To: 头部头字段message.addRecipient(Message.RecipientType.TO,new InternetAddress(to));// Set Subject: 头字段message.setSubject("空门 控股集团","UTF-8");// 发送 HTML 消息, 可以插入html标签String generatedCode = code;   // 假设后台生成的验证码String emailBody = vericodeHtml.replace(":data=\"123456\"", ":data=\"" + generatedCode + "\"").replace("1EM456", generatedCode); //将发送页面的验证码改为后台生成的验证码message.setText(emailBody, "UTF-8", "html");try {// 发送消息Transport.send(message);//休眠TimeUnit.MILLISECONDS.sleep(100);//todo 如果发送成功将code保存到redis,防止恶意请求log.info("---red保存成功----");} catch (InterruptedException e) {return false;}return true;}catch (MessagingException mex) {return false;}

public static String vericodeHtml = "<!DOCTYPE html>\n" +"<html lang=\"en\">\n" +"<head>\n" +"    <meta charset=\"UTF-8\">\n" +"    <title>空门控股集团 邮箱验证码</title>\n" +"    <style>\n" +"\n" +"        .main {\n" +"            margin: 10px auto;\n" +"            width: 520px;\n" +"\n" +"            border-top: 4px solid #9373EE;\n" +"            padding: 24px 24px 40px;\n" +"            border-radius:0 0 8px 8px;\n" +"            box-shadow: 0px 0px 1px;\n" +"        }\n" +"\n" +"        .title {\n" +"            margin: 80px auto 32px;\n" +"            font-size: 32px;\n" +"            font-weight: 600;\n" +"            line-height: 45px;\n" +"            letter-spacing: 0px;\n" +"\n" +"        }\n" +"\n" +"        .note {\n" +"            margin: 0 auto;\n" +"            font-size: 18px;\n" +"            line-height: 1.4;\n" +"            left: 0px;\n" +"            top: 77px;\n" +"            font-weight: 400;\n" +"        }\n" +"\n" +"        .code {\n" +"            padding: 16px;\n" +"            text-align: center;\n" +"            background: rgba(147, 115, 238, 0.04);\n" +"            border-radius: 4px;\n" +"            font-weight: 600;\n" +"            font-size: 24px;\n" +"            line-height: 140%;\n" +"            color: #9373EE;\n" +"            margin: 24px 0;\n" +"            letter-spacing: 1px;\n" +"        }\n" +"\n" +"        .claim ul {\n" +"            margin-top: 34px;\n" +"            margin-bottom: 40px;\n" +"            font-size: 13px;\n" +"            line-height: 1.6;\n" +"            color: #5c5c5c;\n" +"            padding: 25px 0;\n" +"\n" +"        }\n" +"\n" +"        .claim ul li {\n" +"            color: rgba(24, 24, 25, 0.42);\n" +"            line-height: 30px;\n" +"        }\n" +"\n" +"        .footer {\n" +"            font-size: 13px;\n" +"            line-height: 1.6;\n" +"            color: #5c5c5c;\n" +"            padding: 25px 0\n" +"        }\n" +"        .title,.note,.claim,.footer {\n" +"            text-align: center;\n" +"        }\n" +"    </style>\n" +"</head>\n" +"<body>\n" +"<div class=\"main\">\n" +"    <div class=\"title\">空门控股集团 邮箱账号验证码</div>\n" +"    <div class=\"note\">你正在进行邮箱验证操作,验证码为:</div>\n" +"    <div class=\"code\" :data=\"123456\">1EM456</div>\n" +"\n" +"    <div class=\"claim\">\n" +"        <ul style=\"list-style: none;\">\n" +"            <li style=\"list-style: none;\">此验证码 15 分钟内有效</li>\n" +"            <li style=\"list-style: none;\">如非本人操作</li>\n" +"            <li style=\"list-style: none;\">转给他人将导致账号被盗和个人信息泄漏,谨防诈骗</li>\n" +"        </ul>\n" +"    </div>\n" +"\n" +"    <div class=\"footer\">\n" +"        <a href=\"https://blog.csdn.net/qq_62254095?spm=1018.2226.3001.5343\" target=\"_blank\" style=\"color: #9373EE; text-decoration: none;\">空门集团</a> - 昨夜西风凋碧树,独上高楼,望尽天涯路。 --蝶恋花·槛菊愁烟兰泣露\n" +"    </div>\n" +"</div>\n" +"</body>\n" +"</html>";

相关文章:

邮箱发送短信的多种方式

第一种&#xff1a;邮箱验证方法&#xff1a; 导入依赖&#xff1a; <!-- mail依赖&#xff08;发送短信的依赖&#xff09; --><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId> &l…...

R语言——taxize(第五部分)

taxize&#xff08;第五部分&#xff09; 3. taxize 文档中译3.71. nbn_synonyms&#xff08;从 NBN 返回具有给定 id 的分类群名称的所有同义词&#xff09;3.72. ncbi_children&#xff08;在 NCBI 中搜索类群的子类群&#xff09;3.73. ncbi_downstream&#xff08;检索 NCB…...

负载均衡lvs

简介 ipvsadm 是 Linux 内核中的 IP 虚拟服务器&#xff08;IPVS&#xff09;管理工具。IPVS是 Linux 内核提供的一种负载均衡解决方案&#xff0c;它允许将入站的网络流量分发到多个后端服务器&#xff0c;以实现负载均衡和高可用性。IPVS通过在内核中维护一个虚拟服务器表&a…...

【腾讯云云上实验室】探索向量数据库背后的安全监控机制

当今数字化时代&#xff0c;数据安全成为了企业和个人最为关注的重要议题之一。随着数据规模的不断增长和数据应用的广泛普及&#xff0c;如何保护数据的安全性和隐私性成为了迫切的需求。 今天&#xff0c;我将带领大家一起探索腾讯云云上实验室所推出的向量数据库&#xff0c…...

阅读笔记——《Removing RLHF Protections in GPT-4 via Fine-Tuning》

【参考文献】Zhan Q, Fang R, Bindu R, et al. Removing RLHF Protections in GPT-4 via Fine-Tuning[J]. arXiv preprint arXiv:2311.05553, 2023.【注】本文仅为作者个人学习笔记&#xff0c;如有冒犯&#xff0c;请联系作者删除。 目录 摘要 一、介绍 二、背景 三、方法…...

electron实现截图的功能

Electron是一种跨平台的桌面应用程序开发框架&#xff0c;可以使用HTML、CSS和JavaScript等Web技术构建桌面应用程序。下面是一种使用Electron实现截图的简单方法&#xff1a; 安装Electron和截图库 首先&#xff0c;需要安装Electron和一个截图库&#xff0c;例如electron-sc…...

11、动态数码管显示

数码管驱动方式 1、单片机直接扫描&#xff1a;硬件设备简单&#xff0c;但会消耗大量的单片机CPU时间 2、专用驱动芯片&#xff1a;内部自带显存、扫描电路&#xff0c;单片机只需告诉他显示什么即可 #include <REGX52.H> //数组代表显示亮灯的内容0、1、2、3、4、5、…...

Linux的基本指令(三)

目录 前言 echo指令&#xff08;简述&#xff09; Linux的设计理念 输出重定向操作符 > 追加输出重定向操作符 >> 输入重定向操作符 < 补充知识 学前补充 more指令 less指令 head指令 tail指令 查看文件中间的内容 利用输出重定向实现 利用管道“ |…...

使用python 实现华为设备的SFTP文件传输

实验目的&#xff1a; 公司有一台CE12800的设备&#xff0c;管理地址位172.16.1.2&#xff0c;现在需要编写自动化脚本&#xff0c;通过SFTP实现简单的上传下载操作。 实验拓扑&#xff1a; 实验步骤&#xff1a; 步骤1&#xff1a;将本地电脑和ensp的设备进行桥接&#xff…...

高防cdn防护原理是什么,是否可以防护服务器吗

随着互联网业务的迅速发展&#xff0c;网络安全问题日益凸显。在这样的背景下&#xff0c;高防CDN作为一种有效的网络安全解决方案&#xff0c;受到了越来越多的关注。那么高防CDN的防护原理是什么呢?接下来就跟小德一起深入了解下吧! 1. 高防CDN的基本概念 我们要明确什么是…...

SELinux零知识学习三十五、SELinux策略语言之角色和用户(6)

接前一篇文章:SELinux零知识学习三十四、SELinux策略语言之角色和用户(5) 三、SELinux策略语言之角色和用户 SELinux提供了一种依赖于类型强制(类型增强,TE)的基于角色的访问控制(Role-Based Access Control),角色用于组域类型和限制域类型与用户之间的关系,SELinux…...

初学Flink 学后总结

最近开始学习Flink,一边学习一边记录,以下是基于【尚硅谷】Flink1.13实战教程总结的笔记,方便后面温习 目录 初始 Flink 一:基础概念 1.Flink是什么 2.Flink主要应用场景...

CSS新手入门笔记整理:CSS基本介绍

CSS&#xff0c;指的是“Cascading Style Sheet&#xff08;层叠样式表&#xff09;”&#xff0c;用于控制网页外观。 CSS引入方式 外部样式表 独立建立一个.CSS文件&#xff0c;在HTML中使用 link标签 来引用CSS文件。link标签放置在head标签内部。 语法 <link rel&qu…...

【华为OD】B\C卷真题 100%通过:需要打开多少监控器 C/C++实现

【华为OD】B\C卷真题 100%通过&#xff1a;需要打开多少监控器 C/C实现 目录 题目描述&#xff1a; 示例1 代码实现&#xff1a; 题目描述&#xff1a; 某长方形停车场&#xff0c;每个车位上方都有对应监控器&#xff0c;当且仅当在当前车位或者前后左右四个方向任意一个…...

HarmonyOS开发(七):构建丰富页面

1、组件状态管理 1.1、概述 在应用中&#xff0c;界面一般都是动态的。界面会根据不同状态展示不一样的效果。 ArkUI作为一种声明式UI&#xff0c;具有状态驱动UI更新的特点&#xff0c;当用户进行界面交互或有外部事件引起状态改变时&#xff0c;状态的变会会触发组件的自动…...

LuatOS-SOC接口文档(air780E)--rsa - RSA加密解密

示例 -- 请在电脑上生成私钥和公钥, 当前最高支持4096bit, 一般来说2048bit就够用了 -- openssl genrsa -out privkey.pem 2048 -- openssl rsa -in privkey.pem -pubout -out public.pem -- privkey.pem 是私钥, public.pem 是公钥 -- 私钥用于 加密 和 签名, 通常保密, 放在…...

简易版王者荣耀

所有包和类 GameFrame类 package newKingOfHonor;import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.io.File; import java.util.ArrayList;im…...

功能测试进阶建议,学习思路讲解

1. 深入了解测试理论&#xff1a; 了解测试的原理、方法和最佳实践&#xff0c;包括黑盒测试、白盒测试、灰盒测试等。可以阅读相关的书籍或参加在线课程。 2. 学习相关测试工具&#xff1a; 掌握常用的测试工具&#xff0c;如缺陷发现工具、性能测试工具、安全测试工具等。可以…...

AI数字人与虚拟人:区别与应用场景

随着人工智能和虚拟技术的不断发展&#xff0c;AI数字人和虚拟人成为了数字世界中的两个重要概念。本文将介绍AI数字人和虚拟人的区别&#xff0c;并探讨它们在不同领域的应用场景。 一、AI数字人与虚拟人的区别 定义和概念&#xff1a; AI数字人&#xff1a;是利用人工智能技术…...

金蝶Apusic应用服务器 任意文件上传漏洞复现

0x01 产品简介 金蝶Apusic应用服务器&#xff08;Apusic Application Server&#xff0c;AAS&#xff09;是一款标准、安全、高效、集成并具丰富功能的企业级应用服务器软件&#xff0c;全面支持JakartaEE8/9的技术规范&#xff0c;提供满足该规范的Web容器、EJB容器以及WebSer…...

Android Wi-Fi 连接失败日志分析

1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分&#xff1a; 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析&#xff1a; CTR…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

DAY 47

三、通道注意力 3.1 通道注意力的定义 # 新增&#xff1a;通道注意力模块&#xff08;SE模块&#xff09; class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

如何在看板中有效管理突发紧急任务

在看板中有效管理突发紧急任务需要&#xff1a;设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP&#xff08;Work-in-Progress&#xff09;弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中&#xff0c;设立专门的紧急任务通道尤为重要&#xff0c;这能…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例&#xff0c;也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下&#xff1a; 定义实例工厂类&#xff08;Java代码&#xff09;&#xff0c;定义实例工厂&#xff08;xml&#xff09;&#xff0c;定义调用实例工厂&#xff…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...

嵌入式面试常问问题

以下内容面向嵌入式/系统方向的初学者与面试备考者,全面梳理了以下几大板块,并在每个板块末尾列出常见的面试问答思路,帮助你既能夯实基础,又能应对面试挑战。 一、TCP/IP 协议 1.1 TCP/IP 五层模型概述 链路层(Link Layer) 包括网卡驱动、以太网、Wi‑Fi、PPP 等。负责…...

ZYNQ学习记录FPGA(二)Verilog语言

一、Verilog简介 1.1 HDL&#xff08;Hardware Description language&#xff09; 在解释HDL之前&#xff0c;先来了解一下数字系统设计的流程&#xff1a;逻辑设计 -> 电路实现 -> 系统验证。 逻辑设计又称前端&#xff0c;在这个过程中就需要用到HDL&#xff0c;正文…...

【Java】Ajax 技术详解

文章目录 1. Filter 过滤器1.1 Filter 概述1.2 Filter 快速入门开发步骤:1.3 Filter 执行流程1.4 Filter 拦截路径配置1.5 过滤器链2. Listener 监听器2.1 Listener 概述2.2 ServletContextListener3. Ajax 技术3.1 Ajax 概述3.2 Ajax 快速入门服务端实现:客户端实现:4. Axi…...

WEB3全栈开发——面试专业技能点P8DevOps / 区块链部署

一、Hardhat / Foundry 进行合约部署 概念介绍 Hardhat 和 Foundry 都是以太坊智能合约开发的工具套件&#xff0c;支持合约的编译、测试和部署。 它们允许开发者在本地或测试网络快速开发智能合约&#xff0c;并部署到链上&#xff08;测试网或主网&#xff09;。 部署过程…...