在C#代码里调用阿里云的短信服务,用于推送消息
以下介绍具体的步骤主要分为配置和代码调用
在控制台首页进入短信服务
跟随快速学习和测试
签名必须为企业名字或者对应网站、应用的名称,其他名称则无法通过校验
编辑模版内容
如果要使用api必须得有AccessKey,如果已有就跳过,没有的要需要自己创建,在右上角用户头像处,出现下拉菜单,点击AccessKey管理
使用子用户AccessKey
创建一个新用户
确定添加之后需要保存,记住accessKeyId和accessKeySecret,关闭之后无法再查看accessKeySecret
增加授权
public class Sample
{
/**
* 使用AK&SK初始化账号Client
* @param accessKeyId
* @param accessKeySecret
* @return Client
* @throws Exception
*/
public static AlibabaCloud.SDK.Dysmsapi20170525.Client CreateClient(string accessKeyId, string accessKeySecret)
{
AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config
{
// 必填,您的 AccessKey ID
AccessKeyId = accessKeyId,
// 必填,您的 AccessKey Secret
AccessKeySecret = accessKeySecret,
};
// 访问的域名
config.Endpoint = "dysmsapi.aliyuncs.com";
return new AlibabaCloud.SDK.Dysmsapi20170525.Client(config);
}
public static void Main(string[] args)
{
// 工程代码泄露可能会导致AccessKey泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378671.html
AlibabaCloud.SDK.Dysmsapi20170525.Client client = CreateClient("accessKeyId", "accessKeySecret");
AlibabaCloud.SDK.Dysmsapi20170525.Models.SendSmsRequest sendSmsRequest = new AlibabaCloud.SDK.Dysmsapi20170525.Models.SendSmsRequest
{
PhoneNumbers = "",
SignName = "",
TemplateParam = "{\"code\":\"1234\"}",
};
AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
try
{
// 复制代码运行请自行打印 API 的返回值
client.SendSmsWithOptions(sendSmsRequest, runtime);
}
catch (TeaException error)
{
// 如有需要,请打印 error
AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
}
catch (Exception _error)
{
TeaException error = new TeaException(new Dictionary<string, object>
{
{ "message", _error.Message }
});
// 如有需要,请打印 error
AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
}
}
}
对代码进行修改,封装接口:
/// <summary>
/// 发送告警信息
/// </summary>
/// <param name="msg">故障告警/报错消息</param>
/// <param name="phoneNumber">手机号(支持对多个手机号码发送短信,手机号码之间以半角逗号(,)分隔。上限为1000个手机号码。)</param>
/// <param name="accessKeyId">授权码accessKeyId</param>
/// <param name="accessKeySecret">授权密码accessKeySecret</param>
/// <returns>调用反馈消息,如果成功返回OK,失败返回失败信息</returns>
public static string SendSmsAlarm(string msg,string phoneNumber,string accessKeyId,string accessKeySecret)
{
AlibabaCloud.SDK.Dysmsapi20170525.Client client = CreateClient(accessKeyId, accessKeySecret);//填入授权码
AlibabaCloud.SDK.Dysmsapi20170525.Models.SendSmsRequest sendSmsRequest = new AlibabaCloud.SDK.Dysmsapi20170525.Models.SendSmsRequest
{
SignName = "XX的应用",//短信签名
TemplateCode = "SMS_1111111",//短信模板
PhoneNumbers = phoneNumber,//手机号
TemplateParam = "{\"message\":\"" + msg + "\"}", //模板参数
};
AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
var resMessage = "";
try
{
// 复制代码运行请自行打印 API 的返回值
var res = client.SendSmsWithOptions(sendSmsRequest, runtime);
resMessage = res.Body.Message;
}
catch (TeaException error)
{
// 如有需要,请打印 error
resMessage = AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
}
catch (Exception _error)
{
TeaException error = new TeaException(new Dictionary<string, object>
{
{ "message", _error.Message }
});
// 如有需要,请打印 error
resMessage = AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
}
return resMessage;
}