一、阿里云配置
1.1 创建AccessKey 和 AccessKey Secret
https://ram.console.aliyun.com/profile/access-keys
1.2 获取签名名称和模版code
https://dysms.console.aliyun.com/domestic/text/sign
二、PHP7.2 + tp6
2.1 安装阿里云SDK
composer require alibabacloud/dysmsapi-20170525 3.0.0
2.2 上代码
<?php
namespace app\admin\controller;
use AlibabaCloud\SDK\Dysmsapi\V20170525\Dysmsapi;
use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\SendSmsRequest;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
use Darabonba\OpenApi\Models\Config;
class SmsController
{
public function sms(): string
{
$mobile = "手机号码";
$code = "验证码";
return $this->send_sms($mobile, $code);
}
public function send_sms($mobile, $code): string
{
$client = self::createClient();
$sendSmsRequest = new SendSmsRequest([
"phoneNumbers" => $mobile, // 国际号码添加区号
"signName" => '签名名称',
"templateCode" => '模板code',
"templateParam" => json_encode(['code' => $code]) // 模板参数
]);
$runtime = new RuntimeOptions([]);
try {
$res = $client->sendSmsWithOptions($sendSmsRequest, $runtime);//判断是否发送成功
if ($res->body->code == "ok") {
return '短信发送成功';
} else {
return $res->body->message;
}
} catch (\Exception $error) {
return $error->getMessage();
}
}
public static function createClient(): Dysmsapi
{
$config = new Config([
"accessKeyId" => 'AccessKey', // 必填
"accessKeySecret" => 'AccessKey Secret' // 必填
]);
// Endpoint 请参考 https://api.aliyun.com/product/Dysmsapi
$config->endpoint = '服务接入点(dysmsapi.aliyuncs.com)';
return new Dysmsapi($config);
}
}