使用node-smpp发送SMS遇Command status 69错误,事务账户无法发送求助
你收到的PDU里command_status: 69是SMPP协议定义的ESME_R_SUBMITFAIL,属于通用提交失败状态码。结合你「营销账户正常、事务账户突然失效」的场景,大概率是事务账户专属的限制或配置问题,给你几个具体排查方向:
可能的原因及排查步骤
事务账户的发送配额/限流触发
多数短信服务商对事务类短信(验证码、通知类)和营销类短信会设置独立的配额池与频次限制。如果之前短时间内用事务账户发送了大量短信,可能触发了服务商的限流机制,或是日/小时配额已用尽。营销账户因配额池独立,所以不受影响。建议直接联系你的短信服务商,确认事务账户的当前配额使用情况和是否触发限流。事务类短信内容不合规
事务类短信的合规要求远高于营销类,必须严格对应「用户触发的事务通知」场景(比如验证码、订单状态变更、账户安全提醒)。如果最近你用事务账户发送的内容偏离了这个范畴,或是包含敏感词、营销性质话术,服务商可能直接拦截提交。可以尝试发送一条标准测试事务短信(比如「您的验证码是1234,5分钟内有效」),验证是否能成功提交。事务账户的SMPP连接异常
虽然你能收到submit_sm_resp响应,但底层SMPP会话可能已出现隐性问题(比如长时间未交互导致会话超时,或是服务商对该账户的连接做了限制)。尝试重新绑定事务账户的SMPP连接,或是重启你的node-smpp客户端实例后再测试发送。事务账户状态异常
比如账户欠费、临时冻结(可能是服务商的审核问题),但营销账户未受波及。这种情况最快的解决方式是联系服务商的技术支持或客户经理,直接查询事务账户的状态是否正常。
额外调试建议
对比两个账户的SMPP配置参数(system_id、password、bind_type等),确保事务账户的配置没有被误修改;同时查看node-smpp的日志,看是否有更详细的错误提示。
内容的提问来源于stack exchange,提问作者sinpleguy

