使用C#发送邮箱验证码

news2024/9/30 17:27:23

使用C#发送邮箱验证码

在很多应用程序中,我们需要使用邮箱来进行用户身份验证。其中一种常见的方式是通过发送验证码到用户的邮箱,然后要求用户输入该验证码进行验证。本文将介绍如何使用 C# 发送邮箱验证码。

声明

验证码登录没有用任何的工具(redis等)

步骤一:获取QQ或者网易邮箱的授权码

可以看本人上一篇获取QQ邮箱的授权码(可代发邮件验证码)的获取QQ的授权码。

   public string EmailSend(string email)
   {
       try
       {
           // 模拟随机验证码 生成随机六位数
           Random random = new Random();
           int randomNum = random.Next(100000, 999999);
           string randomNumber = randomNum.ToString();

           // 邮件发送设置
           using (var mailMessage = new MailMessage())
           {
               mailMessage.From = new MailAddress("用于发送验证码的邮箱");
               //接受验证码的邮箱 一般是登录时用户登录的邮箱
               mailMessage.To.Add(new MailAddress(email));
               mailMessage.Subject = "用户的验证码";
               mailMessage.IsBodyHtml = true;
               // 使用内联 CSS 样式
               mailMessage.Body = @"<html>
                               <head>
                                   <style>
                                       h1 {
                                           color: #333;
                                           font-family: Arial, sans-serif;
                                       }
                                       p {
                                           color: #555;
                                           font-family: Arial, sans-serif;
                                       }
                                       strong {
                                           color: #f00;
                                           font-weight: bold;
                                       }
                                   </style>
                               </head>
                               <body>
                                   <h1>验证码</h1>
                                   <p>您的验证码为:<strong>" + randomNumber + @"</strong></p>
                               </body>
                           </html>";

               //这是QQ的 SMTP 设置   网易邮箱需要修改
               using (var client = new SmtpClient("smtp.qq.com", 587))
               {
                   client.EnableSsl = true;
                   client.Credentials = new NetworkCredential("发送验证码的邮箱和上面一样", "授权码");

                   // 发送邮件
                   client.Send(mailMessage);
                   Console.WriteLine("邮件发送成功!");
               }
           }
           //返回验证码
           return randomNumber;
       }
       catch (System.Exception ex)
       {
           //可做错误处理 记录错误日志
           //log(ex);
           return "邮件发送失败:" + ex.Message;
       }
   }

在上述代码中,EmailSend方法用于发送验证码到用户的邮箱,并返回生成的验证码。在主函数中,我们调用该方法来发送验证码,并要求用户输入验证码进行验证。

步骤二简单调用EmailSend

 [HttpPost]
 public string a(string email)
 {
     EmaliSend e = new EmaliSend();
     return e.emailsendone(email);
 }

这是一个简单的 ASP.NET Core Web API 的控制器方法
POST请求 返回的是验证码

步骤三成功结果

在这里插入图片描述

在这里插入图片描述

步骤四发送成功

返回值和邮箱验证码可以对应

后面会用这个验证码+前端页面做缓存完成邮箱验证码登录。

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

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

相关文章

Linux22.04系统安装显卡驱动,cuda,cudnn流程

1. 安装显卡驱动 ubuntu-drivers deices显示所有适配显卡的驱动型号&#xff0c;recommended为推荐安装 安装 sudo apt install nvidia-driver-440重启 sudo reboot验证 nvidia-smi2. 安装cuda 在 CUDA Toolkit 的下载页面选择系统版本和安装方式&#xff0c;下载并运行…

Vue基础知识三

一 VUE脚手架 1.1 说明 Vue 脚手架是 Vue 官方提供的标准化开发工具&#xff08;开发平台&#xff09;。脚手架最新的版本是 4.x&#xff08;脚手架版本与vue版本无关&#xff0c;我们这里使用脚手架的版本是4.x&#xff09;。文档: https://cli.vuejs.org/zh/。 脚手架官网…

使用Spring Cache优化数据库访问

使用Spring Cache优化数据库访问 在这篇博客中&#xff0c;我们将学习如何使用Spring Cache来优化数据库访问&#xff0c;提高系统性能。我们将创建一个简单的图书管理应用作为示例&#xff0c;并演示如何通过缓存减少对数据库的频繁查询。 1. 项目结构 首先&#xff0c;我们…

【影刀RPA_如何使用影刀的企业微信指令?】

思路&#xff1a;先用python代码过一遍&#xff0c;再将必要参数填到指令里面。 第一步&#xff1a; 1、在企业微信后台新建应用&#xff0c;设置消息接收地址&#xff08;需要服务器的公网ip地址&#xff09;&#xff0c;进行签名验证。然后&#xff0c;从浏览器中查询ip地址…

LabVIEW在指针式仪表读数中的应用

在LabVIEW环境中&#xff0c;为实现指针式仪表的自动读数&#xff0c;首先进行图像预处理&#xff0c;包括图像缩放、灰度化和二值化&#xff0c;以提高处理速度和减少噪声干扰。利用LabVIEW的图像处理功能&#xff0c;灰度化和二值化操作简化了图像的色彩信息&#xff0c;便于…

Open3d GUI 之对话框

文章目录 对话框关闭对话框文件对话框 Open3d快速上手&#x1f48e; 点云对象详解 对话框 open3d中的对话框用gui.Dialog来实现&#xff0c;但这个对话框其实只有个框&#xff0c;并没有对话&#xff0c;需要人为地进行布局规划。 如果单纯地希望演示一下对话框&#xff0c;…

完美版视频网站模板 – 苹果CMS v10大橙子vfed主题

源码下载&#xff1a; https://download.csdn.net/download/m0_66047725/88700504 这次提供的大橙子 vfed 模板 已经完美&#xff0c;只去除了授权验证和正版主题神秘后门&#xff0c;不影响任何功能体验性。主题优化&#xff1a;全站响应式自带主题设置面板自带联盟资源库大全…

《MySQL系列-InnoDB引擎06》MySQL锁介绍

文章目录 第六章 锁1 什么是锁2 lock与latch3 InnoDB存储引擎中的锁3.1 锁的类型3.2 一致性非锁定读3.3 一致性锁定读3.4 自增长与锁3.5 外键和锁 4 锁的算法4.1 行锁的三种算法4.2 解决Phantom Problem 5 锁问题5.1 脏读5.2 不可重复读5.3 丢失更新 6 阻塞7 死锁 第六章 锁 开…

【亚马逊云科技】使用Helm 3为Amazon EKS部署Prometheus+Grafana监控平台

文章目录 1. 创建Kubernetes命名空间2. 添加Prometheus社区helm chart3. 安装prometheus4. 检查Prometheus Pod运行状况5. 检查Prometheus Service部署情况6. 修改服务访问端口类型7. 访问Prometheus数据收集情况8. 访问Grafana9. 设置数据源10. 查看Kubernetes各类性能可视化参…

初中数学:几何题的相关解题原则总结

一、多问类型的几何题 我们做题&#xff0c;应该都遇到过这类几何题目&#xff0c;就是&#xff0c;三个小问&#xff0c;每个小问对应一个几何图像&#xff0c;而且&#xff0c;渐渐复杂。这种题目&#xff0c;大多数有一个变化的条件&#xff0c;比如&#xff0c;动点、角度…

嵌入式培训机构四个月实训课程笔记(完整版)-Linux系统编程第四天-Linux管道练习题(物联技术666)

更多配套资料CSDN地址:点赞+关注,功德无量。更多配套资料,欢迎私信。 物联技术666_嵌入式C语言开发,嵌入式硬件,嵌入式培训笔记-CSDN博客物联技术666擅长嵌入式C语言开发,嵌入式硬件,嵌入式培训笔记,等方面的知识,物联技术666关注机器学习,arm开发,物联网,嵌入式硬件,单片机…

冒泡排序数据结构实验报告

实验目的&#xff1a; 理解冒泡排序算法的原理和基本思路。熟悉冒泡排序在实际应用中的场景和优化方法。 实验内容&#xff08;实验题目与说明&#xff09; 编写一个双向冒泡排序算法&#xff0c;即在排序过程中以交替的正、反两个方向进行遍历。若第一趟把关键字最大的记录…

【Sublime Text】| 02——常用插件安装及配置

系列文章目录 【Sublime Text】| 01——下载软件安装并注册 【Sublime Text】| 02——常用插件安装及配置 失败了也挺可爱&#xff0c;成功了就超帅。 文章目录 1. 汉化2. 更换颜色主题3. 更改编码插件—ConvertToUTF84. 对齐插件—Alignment5. 括号高亮插件—BracketHighligh…

亲,你相信数据吗?

对于这个问题&#xff0c;我们首先要看一下数据的属性&#xff0c;数据本身是中性的&#xff0c;只是信息的一个载体&#xff0c;从这个属性定义来看&#xff0c;我们是不能盲目相信或者不相信数据的。相不相信数据&#xff0c;其实是数据可靠性的问题&#xff0c;而数据可靠性…

网络安全红队常用的攻击方法及路径

一、信息收集 收集的内容包括目标系统的组织架构、IT资产、敏感信息泄露、供应商信息等各个方面&#xff0c;通过对收集的信息进行梳理&#xff0c;定位到安全薄弱点&#xff0c;从而实施下一步的攻击行为。 域名收集 1.备案查询 天眼查爱企查官方ICP备案查询 通过以上三个…

与Anders Hejlsberg一起深入TypeScript - BDL2011

TypeScript是JavaScript的类型化超集&#xff0c;编译成纯JavaScript。与TypeScript的创建者Anders Hejlsberg坐下来讨论你所有的问题&#xff0c;并讨论TypeScript设计理念和生态发展! 视频地址&#xff1a; https://mp.weixin.qq.com/s?__bizMzU3NjM0NjY0OQ&mid224748…

[SAP ABAP] ABAP基础语法

ABAP(Advanced Business Application Programming)是一种编程语言&#xff0c;用于SAP软件的开发和定制 SAP ABAP是一种高级语言&#xff0c;主要用于在SAP平台上为大型企业和金融机构开发企业应用程序 1. ABAP基本语法结构 ABAP源程序由注释和ABAP语句组成&#xff0c;其中…

linux centos 部署 jenkins

一、试了用容器部署&#xff0c;不行。(建议别用容器部署) 二、直接部署在主机上 1、安装java环境 yum install java-11-openjdk-devel # 检查 java -version # 打印 [rootiZwz9a99mctbkabkh2imhdZ init.d] java -version openjdk version "11.0.21" 2023-10-17 L…

用HTML的原生语法实现两个div子元素在同一行中排列

代码如下&#xff1a; <div id"level1" style"display: flex;"><div id"level2-1" style"display: inline-block; padding: 10px; border: 1px solid #ccc; margin: 5px;">这是第一个元素。</div><div id"…

ThinkPHP5多小区物业管理系统源码(支持多小区)

基于 ThinkPHP5 Bootstrap 倾力打造的多小区物业 管理系统源码&#xff0c;操作简单&#xff0c;功能完善&#xff0c;用户体验良好 开发环境PHP7mysql 安装步骤: 1.新建数据库db_estate,还原数据db_estate.sql 2.修改配置文件&#xff1a;application/database.php 3.运…