已验证Caller ID且购Twilio号码,仍无法发送OTP短信求助
解决Twilio Trial账户发送OTP到已验证号码仍报错的问题
问题概述
你使用Java Spring Boot开发Twilio OTP短信功能时,收到以下错误:
{"status": "FAILED", "message": "The number +8496763XXXX is unverified. Trial accounts cannot send messages to unverified numbers; verify +8496763XXXX at twilio.com/user/account/phone-numbers/verified, or purchase a Twilio number to send messages to unverified numbers"}
你已确认接收号码+8496763XXXX在Verified Caller IDs中,且已购买Twilio号码+18052836183,但仍无法发送短信。
排查与解决步骤
1. 核对接收号码的验证细节
- 登录Twilio控制台,进入Phone Numbers > Verified Caller IDs,严格核对接收号码的格式:必须是标准E.164格式(
+8496763XXXX),无空格、短横线等多余符号。 - 确认号码状态为「已验证」,若状态异常,删除后重新添加并完成验证流程(接收Twilio的验证短信/电话),等待5-10分钟让系统同步状态。
2. 检查Spring Boot代码中的参数配置
确保代码里的发送方、接收方号码配置完全正确:
- 发送方必须使用你购买的Twilio号码
+18052836183,不能用Twilio提供的测试号码或未购买的号码。 - 接收方号码必须与Verified Caller IDs中的号码完全一致。
- 示例代码参考:
// 替换为你的Twilio账户SID和Auth Token Twilio.init("你的账户SID", "你的Auth Token"); String from = "+18052836183"; // 已购买的Twilio号码 String to = "+8496763XXXX"; // 已验证的接收号码 String otpMessage = "你的OTP验证码是:123456"; Message message = Message.creator( new PhoneNumber(to), new PhoneNumber(from), otpMessage ).create();
3. 验证Twilio账户的权限逻辑
- 即使购买了Twilio号码,Trial账户仍无法向未验证号码发送短信,但你的情况是接收号码已验证,需确认Twilio系统是否正确同步了验证记录。若重新验证后仍无效,可尝试提交工单联系Twilio支持团队确认账户状态。
- 若测试需求紧急,可考虑升级为付费账户,解除Trial状态的所有发送限制。
4. 查看Twilio API日志定位问题
进入Twilio控制台的Monitor > Logs > Messaging,查看具体的请求日志:
- 检查请求中的
To、From号码是否与你配置的一致。 - 查看日志中的详细错误描述,可能存在隐藏的格式问题或账户限制。
5. 用Twilio控制台测试基础功能
使用控制台的Try it Out > Send a SMS工具,直接输入已购买的发送号码和已验证的接收号码发送测试短信:
- 若控制台发送成功,说明问题出在Spring Boot代码的配置(如账户SID/Auth Token错误、参数拼写错误)。
- 若控制台发送失败,说明账户或号码验证存在底层问题,需联系Twilio支持。
额外提示
- 确保项目中配置的Twilio账户SID、Auth Token是生产环境的有效密钥,没有使用测试环境的密钥。
- 部分地区的号码验证可能存在延迟,重新验证后不要立即测试,等待系统同步完成。
内容的提问来源于stack exchange,提问作者Code-forever
相关产品推荐
相关产品推荐

