本文章主要是在C# ASP.NET Core Web API框架實現向手機傳送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿里雲,騰訊雲上面也可以。
- 首先我們先去 互億無線 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
{
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)指導