overtrue / easy-sms

📲 一款满足你的多种发送需求的短信发送组件
MIT License
3.13k stars 543 forks source link

不在服务区发送失败,但是没有捕获到错误。 #249

Closed dzymail closed 2 years ago

dzymail commented 4 years ago

原来用过几次情况正常,今天给自己手机发消息测试。没有错误,但是没收到短信,我到阿里云后台去查,才发现提示问题。

失败原因: 停机、空号、暂停服务、关机、不在服务区(UNDELIV) 建议: 建议联系平台核查原因

是不是我的代码写法有问题?请问如何改进? try { $easySms->send($number, [ 'template' => $tpl_code, 'data' => [ 'code' => $code ], ]); } catch (NoGatewayAvailableException $exception) { $message = $exception->getException('aliyun')->getMessage(); .... .... return $result; }

overtrue commented 4 years ago

如果他接口没返回失败这个包也没办法判断哈

dzymail commented 4 years ago

我查了阿里云页面,这种是有专用错误代码的,不过是不是返回了我不确定。但是既然阿里云把这个单独记录在后台错误里,估计是某种方式返回了错误的。现在无法重新复现场景,所以也不确定。

overtrue commented 4 years ago

@dzymail 尝试重试一下看看,监听一下返回值

llxcyzgh commented 4 years ago

调用阿里云短信api发送短信, 阿里云端有个参数校验, 不通过会直接报错误, 不发出短信, 并返回错误. 这是 trycatch 中能拿到的.