SMPP发送SMS报错00000436:两类错误是否相同及代码查询
解答你的SMPP错误码疑问
Hey there, let's clear up your confusion and help you troubleshoot this issue:
核心问题:两个错误是同一个
绝对是同一个错误。这里的Negative response 00000436 found是jsmpp库把SMSC返回的错误包装成异常后的提示,而SMSC returned error code 0x00000436是这个错误码的十六进制写法(0x00000436和00000436是完全等价的,前者只是明确标注了十六进制前缀)。本质都是你的SMPP请求被SMSC拒绝,返回了这个特定错误码。
为什么在标准SMPP错误列表里找不到0x0436?
标准的SMPP 3.4/5.0规范定义的错误码里确实没有0x0436,这个属于运营商或SMSC厂商自定义的私有错误码——很多服务商都会在标准码之外扩展自己的错误码体系,用来标识他们系统内部的特定问题(比如号码格式校验不通过、短信内容违规、账户配额不足、路由故障等等)。
下一步排查建议
- 优先联系你的SMSC服务商:直接对接他们的技术支持,索要他们的自定义错误码文档,这是最快搞清楚错误原因的方式,只有他们知道0x0436具体代表什么问题。
- 检查你的请求参数是否有明显错误:
- 注意到你代码里写了
TypeOfNumber.INTERNATIONAL.ALPHANUMERIC,这明显是枚举值使用错误!TypeOfNumber是枚举类,INTERNATIONAL和ALPHANUMERIC是两个独立的枚举常量,不能链式调用,应该根据实际场景选其中一个(比如发送方是字母数字短号就用ALPHANUMERIC,是国际号码就用INTERNATIONAL),这个参数错误很可能触发SMSC的错误返回。 - 核对接收号码(
mtport)和发送号码(sentNumber)的格式:确认是否符合SMSC要求,比如国际号码是否加了国家码前缀,有没有多余的符号(比如空格、横杠)。 - 检查
GeneralDataCoding的设置:如果你的短信包含非ASCII字符(比如中文),要确保编码设置正确(比如用GeneralDataCoding(0x08)代表UTF-16,或者对应GSM 03.38的编码),编码不匹配也可能被SMSC拒绝。
- 注意到你代码里写了
- 开启jsmpp的调试日志:配置日志框架(比如Logback、Log4j)打印jsmpp的DEBUG级日志,这样能看到完整的SMPP请求和响应报文细节,有助于进一步定位问题。
内容的提问来源于stack exchange,提问作者thatGuy
相关产品推荐
相关产品推荐

