1.国外短信这里介绍:短信宝
用的是thinkphp框架
在TP模块下的目录新建Service文件夹,在里面新建service服务类用于短信宝发送短信。
更多详情可参考官网:
namespaceHome\Service;
classSmaoService{
function__construct(){
$config=array(
'user'=D('Config')-get('msg_user'),
'pass'=D('Config')-get('msg_pass'),
'smsapi'='接口地址',
);
$statusCode=array(
0=短信发送成功,
-1=参数不全,
-2=服务器空间不支持,请确认支持curl或者fsocket,联系您的空间商解决或者更换空间!,
30=密码错误,
40=账号不存在,
41=余额不足,
42=帐户已过期,
43=IP地址限制,
50=内容含有敏感词
);
$this-config=$config;
$this-statusCode=$statusCode;
}
/**
*发送验证码
*@param$phone
*@param$code验证码
*@returnmixed
*/
publicfunctionsendMsg($phone,$code){
$config=$this-config;
$statusCode=$this-statusCode;
$autograph=D('Config')-get('msg_autograph');
$content=D('Config')-get('msg_content');
$content='【'.$autograph.'】'.str_replace('{code}',$code,$content);
$sendurl=$config['smsapi'].sms?u=.$config['user'].p=.md5($config['pass']).m=.$phone.c=.urlencode($content);
$status=file_get_contents($sendurl);
$reData['status']=$status;
$reData['info']=$statusCode[$status];
return$reData;
}
}
数据库中要建配置参数:
msg_user(短信宝用户名)
msg_pass(短信宝密码)
msg_autograph(短信宝签名)
msg_content(短信内容,必须包含验证码替换符{code})
2.国外的介绍QcloudS腾讯短信
可以发送国内短信的接口有很多,之前也有整理比较好用的。当有用户需要发送国际短信时,比较常用就是阿里和腾讯的了。下面是腾讯短信简单发送对接TP的Service
下面以国际短信为例
1、在腾讯短信控制台申请海外文本短信,只需要申请短信模板即可,海外短信不需要申请签名,国内短信必须申请签名。
2、下载官方的phpSDK,在TP使用时需要小改一下命名空间,文章下有提供可下载。放到TP的Vendor/Qcloudsms文件夹中。
3、在要使用的模块下新建QcloudsmsService.class.php,代码如下:
<!--?phpnamespaceHome\Service;
classQcloudsmsService{
function__construct(){
$config=array(
'appid'='14054******',//控制台查看
'appkey'='6fe55********************',//控制台查看
'templId'='295555**',
'nationCode'='852555',//国家或地区区号,香港852,大陆86
);
$this-config=$config;
}
/**
*发送验证码
*@param$phone
*@param$code验证码
*@returnmixed
*/
publicfunctionsendMsg($phone,$code){
vendor('Qcloudsms.SmsSender');
$config=$this-config;
$singleSender=new\SmsSingleSender($config['appid'],$config['appkey']);
//普通单发
$result=$singleSender-send(0,$config['nationCode'],$phone,您好,您的验证码为.$code,,);
//返回的成功示例:{result:0,errmsg:OK,ext:,sid:2:670479-0268698729-028972-001510040916,fee:1}
//result为0表示发送成功
$rsp=json_decode($result,true);
return$rsp;
}
}