邮箱发送短信的多种方式

第一种:邮箱验证方法:

导入依赖:

<!--       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>";

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

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

相关文章

面对Spring 不支持java8的改变方法

接下来&#xff0c;就只有17与21了&#xff0c;JDK开发人员每隔半年&#xff0c;发布一个新的版本&#xff0c;但是新版本也只是维护一段时间&#xff08;一年/半年&#xff09;业务越小&#xff0c;升级越简单 1.如何创建Spring Boot项目,阿里云上去下载代码&#xff0c;然后使…

Vue简单的表单操作

效果预览图 完整代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>作业</title><styl…

【点云surface】 凹包重构

1 处理过程可视化 原始数据 直通滤波过滤后 pcl::ProjectInliers结果 pcl::ExtractIndices结果 凹包结果 凸包结果 2 处理过程分析&#xff1a; 原始点云 ---> 直通滤波 --> pcl::SACSegmentation分割出平面 -->pcl::ProjectInliers投影 --> pcl::ConcaveHull凹包…

编程题 :简单的洗牌算法的实现

&#x1f4d1;打牌 &#xff1a; da pai ge的个人主页 &#x1f324;️个人专栏 &#xff1a; da pai ge的博客专栏 ☁️宝剑锋从磨砺出&#xff0c;梅花香自苦寒来 目录 &#x1f324;️简单的洗牌算法…

【C++ Primer Plus学习记录】延时循环

有时候&#xff0c;让程序等待一段时间很有用。例如&#xff0c;可能遇到这样的程序&#xff0c;在屏幕上显示一条消息&#xff0c;而没来及阅读之前&#xff0c;又出现了其他内容。这样读者担心自己错过了重要的、无法恢复的消息。如果程序在显示其他内容之前等待5秒钟&#x…

Mybatis反射工厂类DefaultReflectorFactory

DefaultReflectorFactory是反射工厂接口ReflectorFactory的默认实现&#xff0c;其主要是实现了对反射对象Reflector的创建和缓存。 有三个方法&#xff1a; // 判断是否开启缓存boolean isClassCacheEnabled();// 设置是否缓存void setClassCacheEnabled(boolean classCacheEn…

java基础进阶-线程池

1、线程池 线程池就是一个可以复用线程的技术。 2、应用场景 用户每发起一个请求&#xff0c;后台就需要创建一个新线程来处理&#xff0c;下次新任务来了肯定又要创建新线程处理的&#xff0c;而创建新线程的开销是很大的&#xff0c;并且请求过多时&#xff0c;肯定会产生大…

单片机学习1——点亮一个LED灯

Keil软件编写程序&#xff1a; 特殊功能寄存器声明&#xff1a; #include<reg52.h>sbit LED P1^0;void main() {LED 0;while(1); } 代码说明&#xff1a; sbit 语句是特殊功能位声明。 生成HEX文件&#xff0c;这个文件是下载到单片机里的文件。Options for Target…

【Linux】初识重定向(输入输出)

一切皆文件 这是Linux的设计理念&#xff0c;因为这个理念的存在我们可以使用统一的方法对待不同的东西&#xff0c;&#xff0c;这也是为什么嵌入式之类的会需要Linux&#xff0c;因为用LInux来操纵硬件真的很方便 另外我们下文也会都基于这个理念来命名&#xff0c; 比如&am…

1.用数组输出0-9

文章目录 前言一、题目描述 二、题目分析 三、解题 程序运行代码 四、举一反三一、题目描述 二、题目分析 三、解题 程序运行代码 总结 前言 本系列为数组编程题&#xff0c;点滴成长&#xff0c;一起逆袭。 一、题目描述 用数组输出0-9 二、题目分析 数组下标从0开始 用数组…

趣链科技,HyperChain

目录 趣链科技 HyperChain 产品介绍 CA认证即电子认证服务 趣链科技 趣链区块链平台Hyperchain-核心产品-趣链科技 趣链科技飞洛区块链服务开放平台

AIGC技术的未来趋势:创新、智能化与社会影响

随着人工智能生成内容&#xff08;AIGC&#xff09;技术的不断演进&#xff0c;我们不仅见证了其在各个领域的广泛应用&#xff0c;还能够推测其未来的发展趋势。本文将探讨AIGC技术未来的几个关键趋势&#xff0c;涵盖创新、智能化以及可能的社会影响。 1. 模型的进一步优化和…

MySQL(免密登录)

简介: MySQL免密登录是一种允许用户在没有输入密码的情况下直接登录到MySQL服务器的配置。这通常是通过在登录时跳过密码验证来实现的。 1、修改MySQL的配置文件 使用vi /etc/my.cnf&#xff0c;添加到【mysqld】后面 skip-grant-tables #配置项告诉mysql跳过权限验证&#…

[Spring ~必知必会] Bean 基础常识汇总

文章目录 Bean 相关到底什么是beanFactorybeanFactory能干啥ApplicationContext是什么ApplicationContext的功能比 BeanFactory多了什么 容器的实现BeanFactory的实现ApplicationContext的实现xml 配置配置类配置 Bean 的生命周期3.1 Bean 的常见的后处理器测试代码总结 3.2 工…

python回溯求解电话号码组合

给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。 输入&#xff1a;digits "23" 输出&#xff1a;["ad&qu…

振南技术干货集:FFT 你知道?那数字相敏检波 DPSD 呢?(2)

注解目录 1 、DPSD 的基础知识 1.1 应用模型 1.2 原理推导 1.3 硬件 PSD &#xff08;相敏检波&#xff0c;就是从繁乱复杂的信号中将我们关心的信号检出来&#xff0c;同时对相位敏感。 数学原理&#xff0c;逃不掉的&#xff0c;硬着头皮看吧。&#xff09; 2 、DPSD …

【Redis缓存】RedisTemplate如何获取符合要求的key,批量获取key

RedisTemplate如何获取符合要求的key,批量获取key 一、方法/命令二、数据使用 一、方法/命令 如果使用命令的形式&#xff0c;输入以下命令即可 keys *如果使用RedisTemplate&#xff0c;则方法为 redisTemplate.keys()获取所有符合条件的key。 二、数据使用 redis中缓存了…

linux下的工具---vim

一、了解vim 1、vim是linux的开发工具 2、vi/vim的区别简单点来说&#xff0c;它们都是多模式编辑器&#xff0c;不同的是vim是vi的升级版本&#xff0c;它不仅兼容vi的所有指令&#xff0c;而且还有一些新的特性在里面。例如语法加亮&#xff0c;可视化操作不仅可以在终端运行…

Android笔记(十四):JetPack Compose中附带效应(一)

在Android应用中可以通过定义可组合函数来搭建应用界面。应用界面的更新往往是与可组合函数内部定义的状态值相关联的。当界面的状态值发生变更&#xff0c;会导致应用界面进行更新。在Android笔记&#xff08;九&#xff09;&#xff1a;Compose组件的状态&#xff0c;对Compo…

【新手解答2】深入探索 C 语言:一些常见概念的解析

C语言的相关问题解答 写在最前面问题1变量名是否有可能与变量重名&#xff1f;变量名和变量的关系变量名与变量是否会"重名"举例说明结论 变量则是一个地址不变&#xff0c;值时刻在变的“具体数字”变量的地址和值变量名与数据类型具体化示例结论 问题2关于你给我的…