使用前,需要在阿里云平台申请key,以及短信模板
/// <summary>
/// 短信发送类
/// </summary>
public class AliyunSmsSender
{
/// <summary>
/// 短信的密钥KeyId
/// </summary>
private string accessKeyId = "***********";
/// <summary>
/// 短信的密钥KeySecret
/// </summary>
/// </summary>
private string accessKeySecret = "***********";
/// <summary>
/// 签名
/// </summary>
private string SignName = "***********";
/// <summary>
/// 短信模板
/// </summary>
private string TemplateCode = "SMS_***********";
/// <summary>
/// 构造函数
/// </summary>
/// <param name="accessKeyId">短信的密钥KeyId</param>
/// <param name="accessKeySecret">短信的密钥KeySecret</param>
/// <param name="SignName">签名</param>
/// <param name="TemplateCode">短信模板</param>
public AliyunSmsSender(string accessKeyId, string accessKeySecret, string SignName, string TemplateCode)
{
this.accessKeyId = accessKeyId;
this.accessKeySecret = accessKeySecret;
this.SignName = SignName;
this.TemplateCode = TemplateCode;
}
/// <summary>
/// 构造函数
/// </summary>
/// <param name="accessKeyId">短信的密钥KeyId</param>
/// <param name="accessKeySecret">短信的密钥KeySecret</param>
public AliyunSmsSender(string accessKeyId, string accessKeySecret)
{
this.accessKeyId = accessKeyId;
this.accessKeySecret = accessKeySecret;
}
/// <summary>
/// 构造函数
/// </summary>
/// <param name="accessKeyId">短信的密钥KeyId</param>
/// <param name="accessKeySecret">短信的密钥KeySecret</param>
/// <param name="SignName">签名</param>
public AliyunSmsSender(string accessKeyId, string accessKeySecret, string SignName)
{
this.accessKeyId = accessKeyId;
this.accessKeySecret = accessKeySecret;
this.SignName = SignName;
}
/// <summary>
/// 构造函数
/// </summary>
public AliyunSmsSender()
{
}
/// <summary>
/// 发送短信
/// </summary>
public bool SendSMS<T>(Dictionary<string, T> Template)
{
bool retVlaue = true;
try
{
List<string> signnamelist = new List<string>();
for (int i = 0; i < Template.Count; i++)
{
signnamelist.Add(SignName);
}
TemplateClass templateClass = new TemplateClass(
JsonConvert.SerializeObject(Template.Keys),
JsonConvert.SerializeObject(signnamelist),
TemplateCode,
JsonConvert.SerializeObject(Template.Values)
);
// SendSMS(templateClass);
}
catch (Exception ex)
{
retVlaue = false;
Console.WriteLine(ex.Message);
}
return retVlaue;
}
/// <summary>
/// 发送短信
/// </summary>
public bool SendSMS<T1, T2>(Dictionary<T1, T2> Template)
{
bool retVlaue = true;
try
{
List<string> signnamelist = new List<string>();
for (int i = 0; i < Template.Count; i++)
{
signnamelist.Add(SignName);
}
TemplateClass templateClass = new TemplateClass(
JsonConvert.SerializeObject(Template.Keys),
JsonConvert.SerializeObject(signnamelist),
TemplateCode,
JsonConvert.SerializeObject(Template.Values)
);
SendSMS(templateClass);
}
catch (Exception ex)
{
retVlaue = false;
Console.WriteLine(ex.Message);
}
return retVlaue;
}
/// <summary>
/// 发送短信
/// </summary>
/// <returns></returns>
public bool SendSMS(TemplateClass templateClass)
{
bool retVlaue = true;
try
{
AlibabaCloud.SDK.Dysmsapi20170525.Client client = CreateClient(accessKeyId, accessKeySecret);
AlibabaCloud.SDK.Dysmsapi20170525.Models.SendBatchSmsRequest sendBatchSmsRequest = new AlibabaCloud.SDK.Dysmsapi20170525.Models.SendBatchSmsRequest
{
PhoneNumberJson = templateClass.PhoneNumberJson,
SignNameJson = templateClass.SignNameJson,
TemplateCode = templateClass.TemplateCode,
TemplateParamJson = templateClass.TemplateParamJson
};
// 复制代码运行请自行打印 API 的返回值
client.SendBatchSms(sendBatchSmsRequest);
}
catch (Exception ex)
{
retVlaue = false;
Console.WriteLine(ex.Message);
}
return retVlaue;
}
/**
* 使用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);
}
}
/// <summary>
/// 发送短信基本信息
/// </summary>
public class TemplateClass
{
/// <summary>
/// 作者:陈朋
/// 创建时间:2022-02-25
/// 构造函数
/// </summary>
public TemplateClass()
{
}
/// <summary>
/// 构造函数
/// </summary>
/// <param name="_PhoneNumberJson"></param>
/// <param name="_SignNameJson"></param>
/// <param name="_TemplateCode"></param>
/// <param name="_TemplateParamJson"></param>
public TemplateClass(string _PhoneNumberJson, string _SignNameJson, string _TemplateCode, string _TemplateParamJson)
{
this.PhoneNumberJson = _PhoneNumberJson;
this.SignNameJson = _SignNameJson;
this.TemplateCode = _TemplateCode;
this.TemplateParamJson = _TemplateParamJson;
}
/// <summary>
/// 电话
/// </summary>
public string PhoneNumberJson { get; set; }
/// <summary>
/// 签名
/// </summary>
public string SignNameJson { get; set; }
/// <summary>
/// 模板
/// </summary>
public string TemplateCode { get; set; }
/// <summary>
/// 参数
/// </summary>
public string TemplateParamJson { get; set; }
}