步骤 1 创建阿里云账号
为了访问短信服务,您需要有一个阿里云账号。如果没有,可首先按照如下步骤创建阿里云账号:
访问阿里云 官方网站,单击页面右上角 立即注册 按钮。
按照屏幕提示完成注册流程并进行实名认证,短信服务只支持实名认证用户使用。为了更好地使用阿里云服务,建议尽快完成实名认证,否则部分阿里云服务将无法使用。具体实名认证流程,请参考 这里。
步骤 2 获取阿里云访问密钥
为了使用短信发送API-NET SDK,您必须申请阿里云的访问密钥。
阿里云访问秘钥是阿里云为用户使用 API(非控制台)来访问其云资源设计的“安全口令”。您可以用它来签名 API 请求内容以通过服务端的安全验证。
该访问秘钥成对(AccessKeyId 与 AccessKeySecret)生成和使用。每个阿里云用户可以创建多对访问秘钥,且可随时启用(Active)、禁用(Inactive)或者删除已经生成的访问秘钥对。
您可以通过阿里云控制台的 秘钥管理页面 创建、管理所有的访问秘钥对,且保证它处于“启用”状态。由于访问秘钥是阿里云对 API 请求进行安全验证的关键因子,请妥善保管你的访问秘钥。如果某些秘钥对出现泄漏风险,建议及时删除该秘钥对并生成新的替代秘钥对。
步骤 3 在控制台完成模板与签名的申请,获得调用接口必备的参数
短信签名
根据用户属性来创建符合自身属性的签名信息。企业用户需要上传相关企业资质证明,个人用户需要上传证明个人身份的证明。
短信签名需要审核通过后才可以使用。
短信模板
短信模板,即具体发送的短信内容。
短信模板可以支持验证码、短信通知、推广短信、国际/港澳台消息四种模式。验证码和短信通知,通过变量替换实现个性短信定制。推广短信不支持在模板中添加变量。国际/港澳台消息只能使用国际/港澳台短信模版发送短信。
短信模板需要审核通过后才可以使用。
为了成功发送一条短信通知,您至少需要完成以下步骤
一、在控制台完成短信签名与短信模板的申请,获得调用接口必备的参数
在“短信签名”页面完成签名的申请,获得短信签名的字符串 签名申请手册
在“短信模板”页面完成模板的申请,获得模板ID。模板申请手册
技术对接步骤
1:下载SDK工具包
1、sdk工具包在解压后可以找到 aliyun-net-sdk-core.dll 和 aliyun-net-sdk-dysmsapi.dll 这两个文件。( net3.5和net2.0的用户请使用/api_demo/net2.0目录下的;core2.0的用户请使用、api_demo/core2.0/目录下的)
2、在您的 Visual Studio 上右键点击 项目,再单击 添加引用 > 浏览(如果您用的是 MonoDevelop,请按照导入 DLL 的相应方法导入这个 .dll 文件),选择以上 .dll 文件,单击 确定 按钮。您就可以在工程中使用阿里云云通信短信服务的 C# SDK 了。
SDK&DEMO【下载地址】
2: 编写样例程序
using Aliyun.Acs.Core;
using Aliyun.Acs.Core.Exceptions;
using Aliyun.Acs.Core.Profile;
using Aliyun.Acs.Dysmsapi.Model.V20170525;
using System;
namespace NetWing.Common.Ali
{
public static class SMSSend
{
static String product = "Dysmsapi"; // 短信API产品名称
static String domain = "dysmsapi.aliyuncs.com"; // 短信API产品域名
static String accessId = "阿里云AccessKeyId";
static String accessSecret = "阿里云AccessKeySecret";
static String regionIdForPop = "cn-hangzhou";
///
/// 发送短信接口
///
/// 必须 短信接收号码,支持以逗号分隔的形式进行批量调用,批量上限为1000个手机号码
/// 必须 短信签名
/// 必须 短信模板ID,发送国际/港澳台消息时,请使用国际/港澳台短信模版
/// 必须 短信模板变量替换JSON串
/// 可选 上行短信扩展码,无特殊需要此字段的用户请忽略此字段
/// 可选 外部流水扩展字段
///
public static bool send(string PhoneNumbers, string SignName, string TemplateCode, string TemplateParam, string SmsUpExtendCode = "90999", string OutId = "abcdefgh")
{
IClientProfile profile = DefaultProfile.GetProfile(regionIdForPop, accessId, accessSecret);
DefaultProfile.AddEndpoint(regionIdForPop, regionIdForPop, product, domain);
IAcsClient acsClient = new DefaultAcsClient(profile);
SendSmsRequest request = new SendSmsRequest();
try
{
request.PhoneNumbers = PhoneNumbers;
request.SignName = SignName;
request.TemplateCode = TemplateCode;
request.TemplateParam = TemplateParam;
request.OutId = OutId;
// 请求失败这里会抛ClientException异常
SendSmsResponse sendSmsResponse = acsClient.GetAcsResponse(request);
if (sendSmsResponse.Code == "OK")
{
return true;
}
else
{
WriteLogs.WriteLogs("SMS_Logs", "Error >> " + sendSmsResponse.Message, "请求号码:" + PhoneNumbers);
return false;
}
}
catch (ServerException e)
{
WriteLogs.WriteLogs("SMS_Logs", "Error >> " + e.Message, "请求号码:" + PhoneNumbers);
return false;
}
catch (ClientException e)
{
WriteLogs.WriteLogs("SMS_Logs", "Error >> " + e.Message, "请求号码:" + PhoneNumbers);
return false;
}
}
}
}
完整文档参考 短信服务