p2 project
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

86 lines
3.5 KiB

5 months ago
<?php
namespace app\utility;
use AlibabaCloud\Client\AlibabaCloud;
use AlibabaCloud\Client\Exception\ClientException;
use AlibabaCloud\Client\Exception\ServerException;
class SendSms
{
public function send($toNum, $content, $accessKey, $secret)
{
try {
// LTAI5t66pUgcFJBMGHamFoxJ
// BxHnmVDiXvOrnxbAfOPvP6jibJL6pp
AlibabaCloud::accessKeyClient($accessKey, $secret)
->regionId('ap-southeast-1')
->asDefaultClient();
$result = AlibabaCloud::rpcRequest()
->product('Dysmsapi')
->host('dysmsapi.ap-southeast-1.aliyuncs.com')
->version('2018-05-01')
4 months ago
->action('SendMessageToGlobe') // 该接口不支持往中国内地发送短信, QPS 限制为 2000 次/秒。超过限制,API 调用会被限流
5 months ago
->method('POST')
->options([
'query' => [
"To" => $toNum,
"Message" => $content,
],
])
->request();
$res = $result->toArray();
if(!isset($res['ResponseCode']) || $res['ResponseCode'] != 'OK'){
trace('短信发送失败:'.json_encode([$res]), 'error');
5 months ago
}
return true;
}catch (ClientException $clientException) {
trace('短信发送失败01_'.$clientException->getMessage(), 'error');
}catch (ServerException $serverException) {
trace('短信发送失败02_'.$serverException->getErrorMessage(), 'error');
5 months ago
}catch (\Exception $exception) {
trace('短信发送失败03_'.$exception->getMessage(), 'error');
}
return false;
}
4 months ago
4 months ago
// 发全球地区(除中国大陆地区)
public function sendMessageToGlobe($toNum, $content, $from, $accessKey, $secret)
4 months ago
{
try {
AlibabaCloud::accessKeyClient($accessKey, $secret)
4 months ago
->regionId('ap-southeast-1') // 服务点对应的公网接入地址: https://www.alibabacloud.com/help/zh/sms/developer-reference/api-dysmsapi-2018-05-01-endpoint?spm=a2c63.p38356.help-menu-44282.d_3_2_1.248f60deo2Ug5G
4 months ago
->asDefaultClient();
$result = AlibabaCloud::rpc()
4 months ago
->product('Dysmsapi')
->version('2018-05-01')
->action('SendMessageToGlobe')
4 months ago
->method('POST')
4 months ago
->host('dysmsapi.ap-southeast-1.aliyuncs.com')
4 months ago
->options([
'query' => [
4 months ago
"To" => $toNum,
"Message" => $content,
"From" => $from, // Sender ID 在阿里云控制台申请
4 months ago
],
])
->request();
$res = $result->toArray();
4 months ago
trace('短信发送结果:'.json_encode([$res]), 'error');
4 months ago
if(!isset($res['ResponseCode']) || $res['ResponseCode'] != 'OK'){
4 months ago
return false;
4 months ago
}
return true;
} catch (ClientException $clientException) {
4 months ago
trace('短信发送失败01_'.$clientException->getErrorMessage(), 'error');
}catch (ServerException $serverException) {
trace('短信发送失败02_'.$serverException->getErrorMessage(), 'error');
}catch (\Exception $exception) {
trace('短信发送失败03_'.$exception->getMessage(), 'error');
4 months ago
}
4 months ago
return false;
4 months ago
}
5 months ago
}