C# ASP.NET Core Web API 框架 實現向手機傳送驗證碼簡訊

songyilin發表於2024-09-28

本文章主要是在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)指導

相關文章