Python调用Twilio SMS Sender API失败问题求助
看起来你在调用Twilio SMS API时遇到了发送失败的问题,我来帮你梳理一下常见的排查点和解决方案:
首先先贴出你的代码(方便对照):
from twilio.rest import Client # Find these values at https://twilio.com/user/account account_sid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" auth_token = "your_auth_token" client = Client(account_sid, auth_token) client.api.account.messages.create( to="+#############", from_="+###########", body="Hello there!" )
你给出的报错信息截断了:
Traceback (most recent call last): File "C:\Users\Keshavarz\Desktop\twilio1.py", line 14, in <module> body='Hello there!' File "C:\Users\Keshavarz\AppDat...
不过没关系,我们可以从Twilio API最容易出问题的几个地方入手排查:
先确认核心认证信息的正确性
你代码里的account_sid和auth_token都是占位符,必须替换成Twilio控制台里的真实值。登录Twilio账户后,在"Dashboard"页面就能看到这两个值,复制的时候要注意别多复制空格或者漏字符,SID的固定开头是AC,别写错了。检查号码格式是否符合要求
Twilio要求所有号码必须使用E.164标准格式,也就是+[国家代码][手机号],比如中国手机号是+86138XXXXXXX,美国号码是+12345678901。
另外,from_参数必须是你在Twilio控制台里申请到的专属号码,不能填自己的私人手机号,这个号码是Twilio分配给你的,在"Phone Numbers"页面可以找到。排查账户状态限制
如果是免费试用账户,有两个限制要注意:- 只能给你在Twilio控制台里验证过的手机号发送短信,没验证的号码会被拒绝;
- 试用账户有额度限制,要是额度用完了也发不了,可以去"Billing"页面查看余额。
添加错误捕获,获取完整报错信息
你的代码没有错误处理逻辑,导致报错信息被截断了。建议加上异常捕获,这样能拿到Twilio返回的具体错误原因,比如是认证失败、号码无效还是权限不足。修改后的代码如下:from twilio.rest import Client from twilio.base.exceptions import TwilioRestException # 替换成你的真实信息 account_sid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" auth_token = "你的真实Auth Token" client = Client(account_sid, auth_token) try: message = client.messages.create( to="+正确的接收号码(E.164格式)", from_="+你的Twilio号码(E.164格式)", body="Hello there!" ) print(f"短信发送成功,消息SID: {message.sid}") except TwilioRestException as e: print(f"发送失败,错误详情: {e.msg}") print(f"错误代码: {e.code}")运行这段代码后,你就能看到完整的错误提示,根据提示再针对性解决就容易多了。
网络和权限排查
偶尔也会遇到网络防火墙拦截Twilio API请求的情况,可以试试切换到手机热点或者检查防火墙设置,确保能访问api.twilio.com这个域名。另外,要是你发送到某些特定国家/地区,可能需要在Twilio控制台里额外申请发送权限。
内容的提问来源于stack exchange,提问作者Alireza Keshavarz Choobeh

