美文网首页
.netcore 使用阿里云短信

.netcore 使用阿里云短信

作者: _sands | 来源:发表于2019-03-07 15:24 被阅读0次
    准备工作
    1. 阿里云上申请短信服务
    2. 创建短信应用、签名、短信模板并申请审核,如果审核不通过,接口是调不通的。
    3. 配置专门用来发短信的accessKeyId和 accessKeySecret
    开始开发

    下载安装sdk


    nuget包管理器

    安装这两个SDK就可以了,下面就是写代码了 代码来自官方 demo

    using System;
    using System.Collections.Generic;
    using System.Text;
    using Aliyun.Acs.Core;
    using Aliyun.Acs.Core.Exceptions;
    using Aliyun.Acs.Core.Profile;
    using Aliyun.Acs.Dysmsapi.Model;
    using Aliyun.Acs.Dysmsapi.Model.V20170525;
    
    namespace Application.SMS
    {
        public class SmsHelper
        {
            /// <summary>
            /// 发送阿里云短信
            /// </summary>
            /// <param name="mobile"></param>
            /// <param name="templateCode"></param>
            /// <param name="json"></param>
            private static void SendAcs(string mobile, string templateCode, dynamic json, int ourid)
            {
               
                if (string.IsNullOrEmpty(mobile))
                {
                    throw new Exception("mobile不能为空");
                }
                if (string.IsNullOrEmpty(templateCode))
                {
                    throw new Exception("templateCode不能为空");
                }
                string product = "Dysmsapi";//短信API产品名称(短信产品名固定,无需修改)
                string domain = "dysmsapi.aliyuncs.com";//短信API产品域名(接口地址固定,无需修改)
                string accessKeyId = "xxxxxxxxxx";//你的accessKeyId,参考本文档步骤2
                string accessKeySecret = "xxxxxxxxx";//你的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 = mobile;
                    //必填:短信签名-可在短信控制台中找到
                    request.SignName = "xxxxxx";
                    //必填:短信模板-可在短信控制台中找到,发送国际/港澳台消息时,请使用国际/港澳台短信模版
                    request.TemplateCode = templateCode;
                    //可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
                    request.TemplateParam = JsonHelper.ToJSON(json);// "{\"name\":\"Tom\",\"code\":\"123\"}";
                    //可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
                    request.OutId = ourid.ToString();// "yourOutId";
                    //请求失败这里会抛ClientException异常
                    SendSmsResponse sendSmsResponse = acsClient.GetAcsResponse(request);
                    if (sendSmsResponse.BizId == null)
                        throw new ApplicationException(sendSmsResponse.Message);
                    System.Console.WriteLine(sendSmsResponse.Message);
                }
                catch (ServerException ex)
                {
                    throw new ApplicationException(ex.Message);
                    //System.Console.WriteLine("Hello World!");
                }
                catch (ClientException ex)
                {
                    throw new ApplicationException(ex.Message);
                    //System.Console.WriteLine("Hello World!");
                }
            }
       }
    }
    
    

    相关文章

      网友评论

          本文标题:.netcore 使用阿里云短信

          本文链接:https://www.haomeiwen.com/subject/vuicpqtx.html