【Github源码】
《上一篇》 介绍了Xmtool工具库中的发送邮件类库,今天我们继续为大家介绍其中的发送短信类库。
发送短信就像发送邮件一样,在软件系统中使用非常普遍,甚至比发送邮件还要常见,有些甚至是软件标配功能;例如现在的短信验证码登录、通过短信找回密码等等。
发送短信需要通过不同的额短信服务商提供的服务才可以,不同服务商提供了不同的SDK或HTTP服务,方法、参数各不相同,使用起来很不方便;系统运行上线后如果想切换一个短信发送平台,更是困难,相当于重新实现一次短信发送功能。
为了解决以上问题,本类库定义了一套标准方法,将各种短信发送平台基于标准方法进行二次封装;在使用时,无论是选用哪家的短信发送平台,都通过标准方法进行调用,使用方便,扩展维护也异常简单。
当前版本,系统实现了阿里短信和腾讯短信两个短信发送平台的二次封装,后续根据需要会持续更新。
public enum SmsProvider
{
Unset,
Alibaba, // 阿里短信平台
Tencent // 腾讯短信平台
}
使用时,需要首先获取一个短信发送对象ISmsProvider;获取对象时,需要指定短信发送平台。
获取短信发送对象后,需要使用Config方法进行配置,这是正式发送短信前必须要进行的工作。
配置完成后,用户便可以调用下面的任意一个方法进行短信发送操作,简单方便。
1. 获取短信发送对象
public static ISmsProvider Sms(SmsProvider provider)
ISmsProvider sms = Xmtool.Sms(SmsProvider.Alibaba);
// TODO
2. 配置短信发送对象
public static ISmsProvider Config(params string[] args)
ISmsProvider sms = Xmtool.Sms(SmsProvider.Alibaba);
// 阿里云短信平台配置方法
sms = sms.Config("accessKeyId(替换成自己的)", "accessKeySecret(替换成自己的)",
"阿里云短信签名(替换成自己的)", "模板编码(替换成自己的)");
/* 腾讯云短信平台
sms = sms.Config("secretId(替换成自己的)", "secretKey(替换成自己的)",
"腾讯云短信签名(替换成自己的)", "模板Id(替换成自己的)", "appId(替换成自己的)");
*/
// TODO
3. 发送短信-标准版
说明:标准版默认使用配置时指定的签名和模板进行发送。
public bool Send(string templateParam, params string[] phoneNums)
ISmsProvider sms = Xmtool.Sms(SmsProvider.Alibaba);
// 阿里云短云平台配置方法
sms = sms.Config("accessKeyId(替换成自己的)", "accessKeySecret(替换成自己的)",
"阿里云短信签名(替换成自己的)", "模板编码(替换成自己的)");
/* 腾讯云短信平台
sms = sms.Config("secretId(替换成自己的)", "secretKey(替换成自己的)",
"腾讯云短信签名(替换成自己的)", "模板Id(替换成自己的)", "appId(替换成自己的)");
*/
sms.Send("参数(替换成自己的,如:{\"code\":\"1234\"})", "136********");
4. 发送短信-自定义版
说明:自定义版可以在发送时指定签名和模板。
public bool Send2(string signName, string templateCode, string templateParam, params string[] phoneNums)
ISmsProvider sms = Xmtool.Sms(SmsProvider.Alibaba);
// 阿里云短信平台配置方法
sms = sms.Config("accessKeyId(替换成自己的)", "accessKeySecret(替换成自己的)",
"阿里云短信签名(替换成自己的)", "模板编码(替换成自己的)");
/* 腾讯云短信平台
sms = sms.Config("secretId(替换成自己的)", "secretKey(替换成自己的)",
"腾讯云短信签名(替换成自己的)", "模板Id(替换成自己的)", "appId(替换成自己的)");
*/
sms.Send("自定义签名", "自定义模板", "参数(替换成自己的,如:1234)", "136********");
<b>*另外,同时提供了SendAsync、Send2Async等功能相同的异步方法,使用时可根据需要选择。</b>