现在的短信服务平台鱼龙混杂,这里推荐大家用大公司的短信服务,因为大公司的短信延迟不会很严重,而且售后也有个保障。我用的是阿里云的短信服务,亲自测了下,提交发送短信的命令后,3秒内可以收到短信。下面来看下具体实现代码吧,短信发送有三个准备工作:获取阿里云的访问秘钥、申请签名、申请模板,具体申请方法可以到官网去查看。做好了前面3个步骤就可以下载sdk文件,解压后我们把aliyun-php-sdk-core文件夹和Dysmsapi文件夹放到ThinkPHP\Library\Vendor\sms文件中

image.png

提取smsDemo.php文件和上面两个文件夹并列放在sms文件夹中。并重命名该文件为sms.class.php文件,打开sms.class.php代码如下:

 <?php
class sms{
 public function __construct(){
   require_once(dirname(__FILE__) . '/aliyun-php-sdk-core/Config.php');
   require_once(dirname(__FILE__) . '/Dysmsapi/Request/V20170525/SendSmsRequest.php');
   require_once(dirname(__FILE__) . '/Dysmsapi/Request/V20170525/QuerySendDetailsRequest.php');
 }

 function sendSms() {

     //此处需要替换成自己的AK信息
     $accessKeyId = "LTKIFa7BAGYPuPsH";
     $accessKeySecret = "Yrx3klJOkgSCNJGVIyS5yyruAKuf7J";
     //短信API产品名
     $product = "Dysmsapi";
     //短信API产品域名
     $domain = "dysmsapi.aliyuncs.com";
     //暂时不支持多Region
     $region = "cn-hangzhou";

     //初始化访问的acsCleint
     $profile = DefaultProfile::getProfile($region, $accessKeyId, $accessKeySecret);
     DefaultProfile::addEndpoint("cn-hangzhou", "cn-hangzhou", $product, $domain);
     $acsClient= new DefaultAcsClient($profile);

     $request = new Dysmsapi\Request\V20170525\SendSmsRequest;

     //必填-短信接收号码
     $request->setPhoneNumbers("13758262447");
     //必填-短信签名
     $request->setSignName("雷小天博客");
     //必填-短信模板Code
     $request->setTemplateCode("SMS_76525071");
     //选填-假如模板中存在变量需要替换则为必填(JSON格式)
     $request->setTemplateParam("{\"name\":\"Lei\",\"data\":\"123456\"}");
     //选填-发送短信流水号
     $request->setOutId("1234");

     //发起访问请求
     $acsResponse = $acsClient->getAcsResponse($request);
     var_dump($acsResponse);
 }


}
//调用该类
//实例化
Vendor('sms.sms#class');
$this->sms = new \sms();
//发送短信
$this->sms->sendSms();

这样一个短信发送的功能就完成了,除了短信发送好用短信查询,短信回执等功能,大家有兴趣可以去试一下