account = isset($config['account'])?$config['account']:''; $this->password = isset($config['password'])?$config['password']:''; $this->sign = isset($config['sign'])?$config['sign']:''; $ip = isset($config['ip'])?$config['ip']:''; $port = isset($config['port'])?$config['port']:''; $this->templateId = isset($config['templateId'])?$config['templateId']:''; if(!$this->account){ $this->error = '未设置账号'; return false; } if(!$this->password){ $this->error = '未设置密码'; return false; } if(!$ip){ $this->error = '未设置IP'; return false; } if(!$port){ $this->error = '未设置端口'; return false; } if(!$this->sign){ $this->error = '未设置签名'; return false; } if(!$this->templateId){ $this->error = '未设置短信模板'; return false; } $this->host = 'https://'.$ip.':'.$port; } /** * 发送短信 * @param $mobiles 手机号多个以逗号隔开,最多1000个 * @param $content 短信内容 * @return bool true=发送成功 false=发送失败 */ public function send($mobiles,$templateParas,$statusCallback=''){ if(!$mobiles){ $this->error = '手机号错误'; return false; } $url = $this->host.'/common/sms/sendTemplateMessage'; //必填,全局号码格式(不包含国家码),示例:15123456789,多个号码之间用英文逗号分隔 $mobiles = explode(',',$mobiles);//短信接收人号码 //请求Headers $headers = [ 'Content-Type: application/json;charset=UTF-8' ]; $requestLists['mobiles']=$mobiles; $requestLists['templateId']=$this->templateId; $requestLists['templateParas']=$templateParas; $requestLists['signature']=$this->sign; //请求Body $data['account']=$this->account; $data['password']=$this->password; $data['requestLists']=array($requestLists); $data['statusCallback']=$statusCallback; $context_options = [ 'http' => ['method' => 'POST', 'header'=> $headers, 'content' => json_encode($data, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT), 'ignore_errors' => true], 'ssl' => ['verify_peer' => false, 'verify_peer_name' => false] //为防止因HTTPS证书认证失败造成API调用失败,需要先忽略证书信任问题 ]; $response = file_get_contents($url, false, stream_context_create($context_options)); tplog($response); return $response; } public function getError(){ return $this->error; } }