阿里云短信服务接入五步走

第一步
购买阿里云短信服务。位置:阿里云 - 物联网与云通讯 - 短信服务。

第二步
设置accesskey。位置:控制台 - 头像菜单 - accesskeys

第三步
在阿里云申请短信签名和短信模板。
申请位置:控制台 - 我的云产品 - 短信服务 - 国内消息(国际/港澳台消息) - 签名管理/模板管理
添加签名和短信模板,短信模板中的变量部分用${参数名}代替。参数名是调用模板的时候需要传入的自定义内容。如果不知道怎么写,可以参考默认给的短信模板的写法。
等待通过,大概一小时左右

第四步
下载最新的sdk并引用。
这个sdk是最恶心的。因为sdk列表中找不到短信服务sdk,所以无奈之下,下载了一个不知道什么版本的sdk包,然后又下载了一个最新的sdk核心dll。
这里也不付地址了,因为不确定是否升级更新。等什么时候用什么时候找吧。
主要两个dll:

第五步
写代码。
这个代码也挺恶心的。官方给的demo完全不知道怎么推送数据,而在百度找到的很多代码,遇到问题都不知道是sdk的原因还是代码有问题。
建议有时间的话不要用dll,下载一下源码看一下。因为我项目需要比较急,只能先百度代码记录下来,然后之后有时间的时候再重新看源码。
下面直接上代码:来源百度+自己的修改
引用部分

using Aliyun.Acs.Core;
using Aliyun.Acs.Core.Profile;
using Aliyun.Acs.Core.Exceptions;
using Aliyun.Acs.Dysmsapi.Model.V20170525;

方法部分

public static void SendSMS(string phone, string validcode)
{
    String product = "Dysmsapi";
    String domain = "dysmsapi.aliyuncs.com";
    String accessKeyId = "";//你的accessKeyId
    String accessKeySecret = "";//你的accessKeySecret
    IClientProfile profile = DefaultProfile.GetProfile("cn-hangzhou", accessKeyId, accessKeySecret);//这里的cn-hangzhou不能修改,修改会报错
    DefaultProfile.AddEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);

    IAcsClient acsClient = new DefaultAcsClient(profile);
    SendSmsRequest request = new SendSmsRequest();
    request.Action = "SendSms";
    try
    {
        //必填:待发送手机号。支持以逗号分隔的形式进行批量调用,批量上限为20个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式
        request.PhoneNumbers = phone;
        //必填:短信签名-可在短信控制台中找到
        request.SignName = "";//这里是你第三步申请通过的签名
        //必填:短信模板-可在短信控制台中找到
        request.TemplateCode = "";//这里是你第三步申请通过的短信模板id
        //可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
        request.TemplateParam = "{\"code\":\"" + validcode + "\"}";//这里的code是你在第三步申请短信模板时,填写的参数名。validcode是参数值
        //可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
        //request.OutId = "2121212";
        //请求失败这里会抛ClientException异常
        SendSmsResponse sendSmsResponse = acsClient.GetAcsResponse(request);
        //result表示执行结果,是由阿里云返回给本地服务器的
        String result = sendSmsResponse.Message;
        System.Console.WriteLine(result);
    }
    catch (ServerException e)
    {
        System.Console.WriteLine("Hello World!");
    }
    catch (ClientException e)
    {
        System.Console.WriteLine("Hello World!");
    }
}

//最后说一句:接口可以本地调用测试,不必发布服务器测试。

你可能感兴趣的:(备用的代码站)