You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jasmin SMS网关返回200 OK状态DLR送达回执不生效问题排查

Jasmin SMS网关DLR送达回执不生效问题排查修复

核心问题原因

  • 响应内容不符合官方要求
    官方要求返回的响应体必须严格匹配ACK/Jasmin,你的代码返回了<body>ACK/jasmin</body>,存在两个错误:一是多了HTML的body标签,二是jasmin首字母小写,DLRThrower会做严格的字符串匹配,内容完全一致才会被识别为合法响应。
  • Header设置错误
    PHP的header()函数第二个参数为是否覆盖同类型头,你写的header('HTTP/1.1 200 OK','Content-Type: text/plain');是错误写法,会导致Content-Type头设置失效,正确写法是分两次设置header。
  • 旧队列消息的干扰
    从日志可以看到,前序所有报错的DLR推送地址都是http://localhost/php,和你代码里配置的http://localhost/php/ack.php不一致,这些报错消息都是你修改dlr-url配置之前就已经进入DLR队列的旧消息,本身配置的推送地址就是错误的,必然推送失败,重试4次后被清空是正常逻辑,最后16:07分成功的那条才是你配置正确后新发送的短信对应的DLR推送。
  • 潜在的PHP报错污染响应体
    你的代码直接读取$_POST["id"]和$_POST["level"],如果Jasmin推送的参数没有这两个键,且PHP开启了Notice级错误提示,会在响应体中输出PHP报错信息,导致响应内容不符合要求。

修复后的ack.php代码

<?php
// 关闭错误输出,避免报错污染响应体
error_reporting(0);

// 正确设置响应头
header('HTTP/1.1 200 OK');
header('Content-Type: text/plain');

// 严格返回要求的响应内容,不要加任何其他输出
echo 'ACK/Jasmin';
?>

验证方法

配置修复后新发送的短信,查看DLR日志如果直接返回Throwed DLR的INFO级日志,没有报错就说明配置生效。

内容的提问来源于stack exchange,提问作者kaleb teshale

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 07:36:03