目录
一、前言
最近新项目要加一个阿里云的短信验证码的验证功能,以注册账号为例,之前调试过阿里大于的短信接口,但是最近阿里把阿里云短信服务换了一个地方,资料就有点对不上了,就又重新调试了一下,网上也有好多例子,但是都不全,趁着这个机会我在这里就做了一下总结:
二、正文
阿里云上有教程,为什么还要在做一下总结呢,因为阿里云官网上服务实在太多了,按照阿里云的短信流程走,半路就迷路了,实在是内容太多,不好筛选有效的信息,稍微一不留神可能就走不下去了,因此我在这里把详细的流程记录一下,以便以后再做这个功能的时候少走弯路。
三、注册开通短信服务(免费的)
注册阿里云账号,登录进去点击产品->短信服务,进入到阿里短信服务页面,往下滚动,会看到阿里云短信的文档与工具,里面就是详细的开发文档教程。
先购买短信,点击短信套餐包购买短信
点击管理控制台,进入短信服务概览页面
四、设置短信服务参数
这里已经买好了服务,点击接口调用,如果没有设置AccessKey,就设置AccessKey了,点击头像,可以设置AccessKey
点击签名管理,设置签名,点击添加签名
点击模板管理,设置短信模板,点击添加短信模板
五、案例代码
按照要求创建完成以后,我们准备工作就全部搞定了,然后就是实际运行测试了,下载官方demo,这里就不详细说怎么测试了,直接给大家上代码,代码里面只需要替换下面几个值就可以完美运行了,我测试过,demo没有问题。
Message.aspx
<asp:Button ID="Button1" runat="server" Text="点击发送短信" onclick="Button1_Click"/>
Message.aspx.cs
using Aliyun.Acs.Core;
using Aliyun.Acs.Core.Exceptions;
using Aliyun.Acs.Core.Profile;
using Aliyun.Acs.Dysmsapi.Model.V20170525;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class LJWY_TEST_Message : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//sendMessage();
}
}
public void sendMessage() {
String product = "Dysmsapi";//短信API产品名称(短信产品名固定,无需修改)
//String domain = "dysmsapi.aliyuncs.com";//短信API产品域名(接口地址固定,无需修改)
String domain = "dysmsapi.aliyuncs.com";
String accessKeyId = "LTAIe6bXXPD7zt0R";//你的accessKeyId,参考本文档步骤2
String accessKeySecret = "xdhww46xZQqYORpKbbe0eK5F3u88cw";//你的accessKeySecret,参考本文档步骤2
IClientProfile profile = DefaultProfile.GetProfile("cn-hangzhou", accessKeyId, accessKeySecret);
//IAcsClient client = new DefaultAcsClient(profile);
// SingleSendSmsRequest request = new SingleSendSmsRequest();
//初始化ascClient,暂时不支持多region(请勿修改)
DefaultProfile.AddEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
IAcsClient acsClient = new DefaultAcsClient(profile);
SendSmsRequest request = new SendSmsRequest();
try
{
//必填:待发送手机号。支持以逗号分隔的形式进行批量调用,批量上限为1000个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式,发送国际/港澳台消息时,接收号码格式为00+国际区号+号码,如“0085200000000”
request.PhoneNumbers = "15900518574";
//必填:短信签名-可在短信控制台中找到
request.SignName = "昊慧";
//必填:短信模板-可在短信控制台中找到,发送国际/港澳台消息时,请使用国际/港澳台短信模版
request.TemplateCode = "SMS_139242809";
//可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
//request.TemplateParam = "{\"name\":\"Tom\", \"code\":\"123\"}";
//request.TemplateParam = "{\"code\":\"123\"}";
request.TemplateParam = "{\"code\":\""+getRandom()+"\"}";
//request.TemplateParam = "您正在申请注册,验证码为:${code},5分钟内有效!";
//可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
request.OutId = "123";
//请求失败这里会抛ClientException异常
SendSmsResponse sendSmsResponse = acsClient.GetAcsResponse(request);
//System.Console.WriteLine(sendSmsResponse.Message);
}
catch (ServerException e)
{
string result = e.Message;
//System.Console.WriteLine("Hello World!");
}
catch (ClientException e)
{
string result = e.Message;
//System.Console.WriteLine("Hello World!");
}
}
public string getRandom() {
Random rd = new Random();
//这里生成一个 6 位数的全数字验证码
int AuthCodeNumber = rd.Next(100000, 1000000);
String AuthCode = AuthCodeNumber.ToString();
return AuthCode;
}
protected void Button1_Click(object sender, EventArgs e)
{
sendMessage();
}
}
参考:https://blog.csdn.net/Su_wu/article/details/80090114