🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
**步骤 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; } } } } ~~~