php thinkphp 阿里云(国际版)短信发送 中国大陆和国外

27 篇文章 1 订阅
4 篇文章 0 订阅

阿里云(国际版)官方文档https://www.alibabacloud.com/help/zh/doc-detail/106583.htm?spm=a2c63.p38356.b99.20.73517f303V0IAm

注意:阿里云账号分(国内版、国际版),不同账号发送短信sdk不一样的

下载sdk速度较慢,一定要耐心等待

坑点一:国际版下载sdk是通过composer命令下载的(也有其他方式,本人未试),如果你使用的是TP框架,通过composer命令下载,可能会与你框架的【composer.json、composer.lock这个两个文件的原因导致你下载失败】

坑点一【解决方式】:单独找一个空文件夹通过composer命令下载下来,放入你框架的第三方文件下面或者vendor文件夹下面即可引入使用

composer下载sdk命令:

composer require alibabacloud/client

sdk下载下来会出现下面2个文件一个文件夹

接下来我们创建一个demo.php文件,里面代码可以去官方文档里面复制

https://www.alibabacloud.com/help/zh/doc-detail/164747.htm?spm=a2c63.p38356.b99.33.5ce85964ssikJc

下面是demo.php文件代码:

特别注意:一定要通过 “require_once”引入你下载的sdk里面的 vendor 文件夹下面的 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.', 十分鐘內輸入, 請勿泄露給其他人';//此处是短信模板,国外模板是自己定义的,所以不需要模板code和签名
        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 gn_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 = '';//记得加上某国家区号【此方式仅支持国外手机号发送验证码】
$code = '1111';
//$res = $Aliyungj->sendSms($phone,$code);
$res = $Aliyungj->gn_sendSms($phone,$code);
var_dump($res);


下面是官方api调用的其他接口,根据不同api接口请求参数,修改上面demo请求参数和请求接口名称 

https://www.alibabacloud.com/help/zh/doc-detail/162279.htm?spm=a2c63.p38356.b99.17.3a29bf11Cm9JBo

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
首先,你需要在阿里云短信控制台中创建签名和模板,并获取到 AccessKeyId 和 AccessKeySecret。 接下来,在Spring Boot项目中添加阿里云 Java SDK的依赖: ``` <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <version>4.5.3</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-dysmsapi</artifactId> <version>1.0.0</version> </dependency> ``` 然后,在项目的 application.properties 文件中添加阿里云短信服务的相关配置: ``` aliyun.sms.accessKeyId=yourAccessKeyId aliyun.sms.accessKeySecret=yourAccessKeySecret aliyun.sms.signName=yourSignName aliyun.sms.templateCode=yourTemplateCode ``` 在代码中,你可以使用以下示例代码发送国际短信: ```java import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.IAcsClient; import com.aliyuncs.exceptions.ClientException; import com.aliyuncs.exceptions.ServerException; import com.aliyuncs.profile.DefaultProfile; import com.aliyuncs.profile.IClientProfile; import com.aliyuncs.sms.model.v20170628.SendSmsRequest; import com.aliyuncs.sms.model.v20170628.SendSmsResponse; import java.util.Arrays; public class SmsUtil { private String accessKeyId; private String accessKeySecret; private String signName; private String templateCode; public SmsUtil(String accessKeyId, String accessKeySecret, String signName, String templateCode) { this.accessKeyId = accessKeyId; this.accessKeySecret = accessKeySecret; this.signName = signName; this.templateCode = templateCode; } public boolean sendSms(String phoneNumber, String message) { IClientProfile profile = DefaultProfile.getProfile("default", accessKeyId, accessKeySecret); DefaultProfile.addEndpoint("default", "default", "Dysmsapi", "dysmsapi.aliyuncs.com"); IAcsClient client = new DefaultAcsClient(profile); SendSmsRequest request = new SendSmsRequest(); request.setPhoneNumbers(phoneNumber); request.setSignName(signName); request.setTemplateCode(templateCode); request.setTemplateParam("{\"code\":\"" + message + "\"}"); try { SendSmsResponse response = client.getAcsResponse(request); if (response.getCode() != null && response.getCode().equals("OK")) { return true; } } catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { e.printStackTrace(); } return false; } public static void main(String[] args) { // 使用示例 SmsUtil smsUtil = new SmsUtil( "yourAccessKeyId", "yourAccessKeySecret", "yourSignName", "yourTemplateCode" ); boolean result = smsUtil.sendSms("+86xxxxxxxxxxx", "yourMessage"); System.out.println(result); } } ``` 其中,phoneNumber 是接收短信的手机号码,message 是短信内容,可以根据模板中定义的变量替换。调用 sendSms 方法即可发送短信

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

昊喵喵博士

大哥你真帅,小姐姐你真漂亮

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值