当前位置:   article > 正文

thinkphp6对接阿里云短信服务完成定时发送短信功能_tp6 定时任务发送短信

tp6 定时任务发送短信

1、导入阿里短信包

通过composer下载依赖包

composer require alibabacloud/dysmsapi-20170525 2.0.22

具体可参见阿里云短信服务 >> 快速学习

阿里云 OpenAPI 开发者门户

2、编写发送短信程序

  1. class Index
  2. {
  3. private $log;
  4. public function index(){
  5. //需要发送的用户数组
  6. $users=[
  7. [
  8. 'mobile' => '手机号码',
  9. 'name' => '姓名'
  10. ]
  11. ];
  12. foreach ($users as $user){
  13. //手机
  14. $mobile = $user['mobile'];
  15. //姓名
  16. $name = $user['name'];
  17. //短信参数
  18. $params = [
  19. 'name' => $name,//姓名
  20. ];
  21. //发送短信
  22. $this->sendSms($mobile,'阿里云短信模板编号',$params);
  23. }
  24. }
  25. //发送短信
  26. private function sendSms($mobile,$smsCode,$params=''){
  27. //手机号码
  28. $phone = trim($mobile);
  29. $data = [
  30. 'templateCode' => $smsCode,//短信模板编号
  31. 'phone' => $phone,//手机号码
  32. //短信参数
  33. 'params' => $params
  34. ];
  35. //调用阿里云短信发送方法
  36. $result = Alicode\AliSms::main($data);
  37. }
  38. }

extend目录创建Alicode/AliSms类

  1. namespace Alicode;
  2. use AlibabaCloud\SDK\Dysmsapi\V20170525\Dysmsapi;
  3. use Darabonba\OpenApi\Models\Config;
  4. use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\SendSmsRequest;
  5. class AliSms
  6. {
  7. /**
  8. * 使用AK&SK初始化账号Client
  9. * @param string $accessKeyId
  10. * @param string $accessKeySecret
  11. * @return Dysmsapi Client
  12. */
  13. public static function createClient(string $accessKeyId, string $accessKeySecret): Dysmsapi
  14. {
  15. $config = new Config([
  16. // 您的AccessKey ID
  17. "accessKeyId" => $accessKeyId,
  18. // 您的AccessKey Secret
  19. "accessKeySecret" => $accessKeySecret
  20. ]);
  21. // 访问的域名
  22. $config->endpoint = "dysmsapi.aliyuncs.com";
  23. return new Dysmsapi($config);
  24. }
  25. /**
  26. * @param string[] $args
  27. * @return void
  28. */
  29. public static function main(array $args)
  30. {
  31. $client = self::createClient("LTAI5tSSAjCaVBxKPbMeoXb6", "KCwxkcnplJThtPOwBh0Mc8xvDolp8w");
  32. //签名
  33. $signName='你的签名';
  34. //短信参数
  35. $templateParam=$args['params'];
  36. if(!empty($templateParam)){
  37. //有参数
  38. $sendSmsRequest = new SendSmsRequest([
  39. "phoneNumbers" => $args['phone'],
  40. "signName" => $signName,
  41. "templateCode" => $args['templateCode'],
  42. "templateParam" => json_encode($templateParam)
  43. ]);
  44. }else{
  45. //无参数
  46. $sendSmsRequest = new SendSmsRequest([
  47. "phoneNumbers" => $args['phone'],
  48. "signName" => $signName,
  49. "templateCode" => $args['templateCode'],
  50. ]);
  51. }
  52. $result = $client->sendSms($sendSmsRequest);
  53. if ($result->body->message == 'OK' && $result->body->code == 'OK') {
  54. return ['code' => 200,'msg'=>'success'];
  55. }
  56. if ($result->body->code == 'isv.MOBILE_NUMBER_ILLEGAL') {
  57. return ['code' => 0, 'msg' => '手机号码格式不正确'];
  58. }
  59. return ['code' => 0, 'msg' => '短信发送失败,网络繁忙'];
  60. }
  61. }

3、设置定时任务

crontab -e

写入以下信息:比如我是设定每天10点发送

0 10 * * * /usr/bin/curl 你的网址

然后,开启定时服务

systemctl start crond.service

如果已经开启,则重启

systemctl restart crond.service

查看定时任务

crontab -l

实时监控日志

 tail -f /var/log/cron

退出tail:Ctrl + C

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/70316
推荐阅读
相关标签
  

闽ICP备14008679号