**步骤 1 创建阿里云账号**
为了访问短信服务,您需要有一个阿里云账号。如果没有,可首先按照如下步骤创建阿里云账号:
访问阿里云 [官方网站](https://www.aliyun.com/?spm=a2c4g.11174450.3.1.129c7d0f9W4Acp),单击页面上的 免费注册 按钮。
按照屏幕提示完成注册流程并进行实名认证,短信服务只支持实名认证用户使用。为了更好地使用阿里云服务,建议尽快完成实名认证,否则部分阿里云服务将无法使用。具体实名认证流程,请参考 [这里](https://help.aliyun.com/knowledge_detail/37171.html?spm=a2c4g.11174450.3.2.129c7d0f9W4Acp)。
**步骤 2 获取阿里云访问密钥**
为了使用短信发送API-NET SDK,您必须申请阿里云的访问密钥。
阿里云访问秘钥是阿里云为用户使用 API(非控制台)来访问其云资源设计的“安全口令”。您可以用它来签名 API 请求内容以通过服务端的安全验证。
该访问秘钥成对(AccessKeyId 与 AccessKeySecret)生成和使用。每个阿里云用户可以创建多对访问秘钥,且可随时启用(Active)、禁用(Inactive)或者删除已经生成的访问秘钥对。
您可以通过阿里云控制台的 [秘钥管理页面](https://ak-console.aliyun.com/?spm=a2c4g.11174450.3.3.129c7d0f9W4Acp#/accesskey) 创建、管理所有的访问秘钥对,且保证它处于“启用”状态。由于访问秘钥是阿里云对 API 请求进行安全验证的关键因子,请妥善保管你的访问秘钥。如果某些秘钥对出现泄漏风险,建议及时删除该秘钥对并生成新的替代秘钥对。
**步骤 3 在控制台完成模板与签名的申请,获得调用接口必备的参数**
**短信签名**
根据用户属性来创建符合自身属性的签名信息。企业用户需要上传相关企业资质证明,个人用户需要上传证明个人身份的证明。
短信签名需要审核通过后才可以使用。
**短信模板**
短信模板,即具体发送的短信内容。
短信模板可以支持验证码、短信通知、推广短信、国际/港澳台消息四种模式。验证码和短信通知,通过变量替换实现个性短信定制。推广短信不支持在模板中添加变量。国际/港澳台消息只能使用国际/港澳台短信模版发送短信。
短信模板需要审核通过后才可以使用。
**为了成功发送一条短信通知,您至少需要完成以下步骤**
一、在控制台完成短信签名与短信模板的申请,获得调用接口必备的参数
在“短信签名”页面完成签名的申请,获得短信签名的字符串 [签名申请手册](https://help.aliyun.com/document_detail/55327.html?spm=a2c4g.11174450.3.4.129c7d0f9W4Acp)
在“短信模板”页面完成模板的申请,获得模板ID。[模板申请手册](https://help.aliyun.com/document_detail/55330.html?spm=a2c4g.11174450.3.5.129c7d0f9W4Acp)
**参数
入参列表**
![](https://box.kancloud.cn/5a0ddb56cd95cb14c401ba27b6e85e4b_812x674.png)
**出参列表**
![](https://box.kancloud.cn/88cbbf6f3b2a3371beba13ac2ae5d1fc_715x234.png)
**技术对接步骤**
**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[【下载地址】](http://alicom-fc-media.cn-hangzhou.oss.aliyun-inc.com/ytxsdk/dysmsapi_demo_sdk__net.zip?spm=a2c4g.11186623.2.8.1e1763caOAyTTj&Expires=1859777142&OSSAccessKeyId=bypFNbGJVk73PsLI&Signature=gD%2FUuFJbFljYPrYioduio6w3QZE%3D)
**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 = ConfigHelper.GetValue("AccessKeyId");
static String accessSecret = ConfigHelper.GetValue("AccessKeySecret");
static String regionIdForPop = "cn-hangzhou";
/// <summary>
/// 发送短信接口
/// </summary>
/// <param name="PhoneNumbers">必须 短信接收号码,支持以逗号分隔的形式进行批量调用,批量上限为1000个手机号码</param>
/// <param name="SignName">必须 短信签名</param>
/// <param name="TemplateCode">必须 短信模板ID,发送国际/港澳台消息时,请使用国际/港澳台短信模版</param>
/// <param name="TemplateParam">必须 短信模板变量替换JSON串</param>
/// <param name="SmsUpExtendCode">可选 上行短信扩展码,无特殊需要此字段的用户请忽略此字段</param>
/// <param name="OutId">可选 外部流水扩展字段</param>
/// <returns></returns>
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
{
CWriteLogs.WriteLogsE("SMS_Logs", "Error >> " + sendSmsResponse.Message, "请求号码:" + PhoneNumbers);
return false;
}
}
catch (ServerException e)
{
CWriteLogs.WriteLogsE("SMS_Logs", "Error >> " + e.Message, "请求号码:" + PhoneNumbers);
return false;
}
catch (ClientException e)
{
CWriteLogs.WriteLogsE("SMS_Logs", "Error >> " + e.Message, "请求号码:" + PhoneNumbers);
return false;
}
}
}
}
~~~