composer安装阿里云sdk
composer require alibabacloud/client
引入autoload.php文件
require_once dirname(__DIR__) . '/aliyun_sdk_guojiban/vendor/autoload.php';
国际版和国内版发送短信代码
<?php
require_once dirname(__DIR__) . '/aliyun_sdk_guojiban/vendor/autoload.php';
use AlibabaCloud\Client\AlibabaCloud;
use AlibabaCloud\Client\Exception\ClientException;
use AlibabaCloud\Client\Exception\ServerException;
class Aliyungj
{
/*国际版:短信模板自己定义不需要模板code和签名*/
public function sendSms($phone,$code){
AlibabaCloud::accessKeyClient($accessKeyId,$accessKeySecret)
->regionId('ap-southeast-1')
->asGlobalClient();
$code = '验证码: '.$code.', 5分钟内输入,请勿泄露给他人';
try {
$result = AlibabaCloud::rpcRequest()
->product('Dysmsapi')
->host('dysmsapi.ap-southeast-1.aliyuncs.com')
->version('2018-05-01')
->action('SendMessageToGlobe')//请求api接口名称
->method('POST')
->options([
'query' => [
"To" => "$phone",//发送目标手机号
"Message" => $code,//发送的内容
],
])
->request();
return \GuzzleHttp\json_decode($result);
} catch (ClientException $e) {
echo $e->getErrorMessage() . PHP_EOL;
} catch (ServerException $e) {
echo $e->getErrorMessage() . PHP_EOL;
}
}
/*国内版:需要模板code和签名*/
public function china_sendSms($phone,$code){
AlibabaCloud::accessKeyClient('$accessKeyId', '$accessKeySecret')
->regionId('ap-southeast-1')
->asGlobalClient();
try {
$result = AlibabaCloud::rpcRequest()
->product('Dysmsapi')
->host('dysmsapi.ap-southeast-1.aliyuncs.com')
->version('2018-05-01')
->action('SendMessageWithTemplate')//请求api接口名称
->method('POST')
->options([
'query' => [
"From" => "",//签名
"TemplateCode" => "",//模板code
"To" => "$phone",//接收手机号
"TemplateParam" => '{"code":"'.$code.'"}',//验证码
],
])
->request();
return \GuzzleHttp\json_decode($result);
} catch (ClientException $e) {
echo $e->getErrorMessage() . PHP_EOL;
} catch (ServerException $e) {
echo $e->getErrorMessage() . PHP_EOL;
}
}
}
调用方法
$Aliyungj = new Aliyungj;
$phone = '';//记得加上某国家区号【此方式仅支持国外手机号发送验证码】新加坡65 国内不需要 例如【65139****2580】
$code = mt_rand(100000, 999999);
$res = $Aliyungj->sendSms($phone,$code);
$res = $Aliyungj->china_sendSms($phone,$code);
var_dump($res);