首页 > 编程语言 >C# ASP.NET Core Web API 框架 实现向手机发送验证码短信

C# ASP.NET Core Web API 框架 实现向手机发送验证码短信

时间:2024-09-28 18:01:08浏览次数:7  
标签:Core ASP string Web 验证码 System using var new

本文章主要是在C# ASP.NET Core Web API框架实现向手机发送验证码短信功能。这里我选择是一个互亿无线短信验证码平台,其实像阿里云,腾讯云上面也可以

  1. 首先我们先去 互亿无线 https://www.ihuyi.com/api/sms.html 去注册一个账号
    注册完成账号后,它会送10条免费短信以及通话验证码(ps:我这上面不是10条因为我已经使用了 新人都是10条)
    2.下面开始代码首先创建一个SendSmsUtil.cs的类


3.下面直接上代码
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;

namespace YourNamespace.Utils
{
public class SendSmsUtil
{
private static readonly string URL = "http://106.ihuyi.com/webservice/sms.php?method=Submit"; // 国内请求路径
private static readonly string APPID = "这里填写自己的APPID"; // 这里填写自己的APPID
private static readonly string APIKEY = "这里填写自己的APIKEY"; // 这里填写自己的APIKEY

    public static async Task<string> SendSmsAsync(string number)
    {
        using (var client = new HttpClient())
        {
            // 随机编号
            Random random = new Random();
            int mobileCode = random.Next(100000, 999999); // 生成一个六位数的随机数

            string content = $"您的验证码是:{mobileCode}。请不要把验证码泄露给其他人。";

            var parameters = new List<KeyValuePair<string, string>>
            {
                new KeyValuePair<string, string>("account", APPID),
                new KeyValuePair<string, string>("password", APIKEY),
                new KeyValuePair<string, string>("mobile", number),
                new KeyValuePair<string, string>("content", content)
            };

            var contentToSend = new FormUrlEncodedContent(parameters);

            try
            {
                var response = await client.PostAsync(URL, contentToSend);
                var responseBody = await response.Content.ReadAsStringAsync();

                // 解析 XML 响应
                // 解析 XML
                XDocument xmlDoc = XDocument.Parse(responseBody);

                // 从 XML 中获取信息
                var code = xmlDoc.Root.Element(XName.Get("code", "http://106.ihuyi.com/"))?.Value;
                var msg = xmlDoc.Root.Element(XName.Get("msg", "http://106.ihuyi.com/"))?.Value;
                var smsid = xmlDoc.Root.Element(XName.Get("smsid", "http://106.ihuyi.com/"))?.Value;



                Console.WriteLine($"code: {code}");
                Console.WriteLine($"msg: {msg}");
                Console.WriteLine($"smsid: {smsid}");
                Console.WriteLine($"mo: {mobileCode}");

                if (code == "2")
                {
                    Console.WriteLine("短信提交成功");
                    return mobileCode.ToString();
                }

            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            return "";
        }
    }
}

}

4.APPID和APIKEY 在这个地方查看
5.下面是控制器中需要的代码
`using Microsoft.AspNetCore.Mvc;
using System.Threading.Tasks;
using YourNamespace.Utils;

namespace YourNamespace.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class SmsController : ControllerBase
{
[HttpPost("send")]
public async Task SendSms([FromBody] string phoneNumber)
{
if (string.IsNullOrEmpty(phoneNumber))
{
return BadRequest("手机号码不能为空");
}

        var result = await SendSmsUtil.SendSmsAsync(phoneNumber);
        if (string.IsNullOrEmpty(result))
        {
            return StatusCode(500, "发送短信失败");
        }

        return Ok(new { VerificationCode = result });
    }
}

}`

6.输入手机号并且测试 下面是个成功的结果 手机并且能受到验证码

以上内容已实现手机验证码功能。代码主要参考官网代码和AI生成还有,可能存在一些语句问题感谢大家的指导和建议!
转载请请注明出处,谢谢!
朱世杰(@Twolp)指导

标签:Core,ASP,string,Web,验证码,System,using,var,new
From: https://www.cnblogs.com/songyilinaishiqi/p/18438226

相关文章

  • DCDC电源设计工具(软件)(一)—— WEBENCH(TI)
    目录一、简介二、在线链接三、设计界面介绍1、首界面2、芯片选择或芯片选型界面3、根据参数选择芯片及设计(1)参数输入界面(2)芯片选型界面(3)根据具体芯片型号选择设计   ①、芯片选择及参数输入界面        ②、TPS54331电源设计详情四、验证设计五、软......
  • DC00020基于springboot新闻网站系统java web项目MySQL新闻管理系统
    1、项目功能演示DC00020基于springboot新闻网站系统javaweb项目MySQL2、项目功能描述  基于springboot+vue新闻网站包括用户和系统管理员两个角色。2.1用户功能1、用户登录、用户注册2、新闻信息:点赞、点踩、收藏、查看3、用户分享:点赞、点踩、收藏、查看、添加......
  • ctfshow-web-信息搜集(11-17)
    web11题目提示:域名其实也可以隐藏信息,比如ctfshow.com就隐藏了一条信息。原理:通过Dns检查查询Flag。这里可以用阿里云的网站:Dns查询网站:阿里云网站运维检测平台(aliyun.com)web12题目提示:有时候网站上的公开信息,就是管理员常用密码原理:查看robots.txt文件,找到后台登录页......
  • 通过torndao 起一个web服务
    需要安装包tornado==6.4.1redis==4.3.3示例代码importtornado.ioloopimporttornado.webfromredis.asyncioimportRedisclassMainHandler(tornado.web.RequestHandler):asyncdefget(self):key=self.get_argument("key","default_key......
  • Java Web核心技术阶段的学习要点
    JavaWeb核心技术阶段的学习要点涵盖了多个关键技术和概念,这些技术和概念对于开发动Web应用程序至关重要。以下是该阶段详细的学习要点:1.HTML/CSS/JSHTML:学习HTML的基本结构和标签,理解如何构建网页的骨架。CSS:掌握CSS的语法和选择器,学习如何使用CSS来美化网页,包括布局、颜......
  • 【Webpack--016】config文件include和exclude配置
    ......
  • WEB3.0是什么?
    WEB3.0是什么?web3之前用户创作分享内容,内容信息用户信息被运营平台的科技公司控制,比如某云,某信,某音,用户对直接的数据没有真正的所有权,web2平台拥有绝对控制权,想禁用你的账号,删除你的账号它们拥有绝对话语权web3是建立在区块链技术上的下一代互联网,强调去中心化,即没有......
  • HarmonyOS NEXT-CoreVision Kit-FaceDetector-实现人脸识别,获取人脸数据
    效果演示图,右边的是人脸数据,可用来比对人脸注意这里只有真机才能测试是否成功,测试机型pce-w30实现这个效果很简洁:打开相册、选取图片、打开文件、创建imageSource、创建PixelMap、喂给faceDetector拿到结果在这里我简单封装了两个工具类方便后续使用,分别是:照片选择类、......
  • 解锁微信小程序新技能:ECharts动态折线图搭配WebSocket,数据刷新快人一步!
    在微信小程序中,数据可视化展示越来越受到开发者的重视。本文将为您介绍如何在微信小程序中使用ECharts绘制折线图,并通过WebSocket实现实时更新图表数据。一、准备工作创建微信小程序项目 首先,我们需要创建一个微信小程序项目。如果您已经熟悉如何创建项目,可以跳过此步骤。......
  • 一文详解WebRTC、RTSP、RTMP、SRT
     背景好多开发者,希望对WebRTC、RTSP、RTMP、SRT有个初步的了解,知道什么场景该做怎样的方案选择,本文就四者区别做个大概的介绍。WebRTC提到WebRTC,相信好多开发者第一件事想到的就是低延迟,WebRTC(WebReal-TimeCommunication)是一项实时通讯技术,它允许网络应用或者站点在不借助中间媒......