报告显示「已送达」,
但客户说没收到

这是马来西亚短信群发里最常见、也最少有人老实解释的问题。这篇讲清楚到底发生了什么。

先搞懂「送达报告」到底证明了什么

一条短信的生命里有三个独立的事件,而大多数后台把它们混成同一个绿色对勾:

阶段能证明什么不能证明什么
已提交你的平台收下了并扣了你的钱运营商那边的任何事
运营商已接收Maxis/CelcomDigi/U Mobile 收下了手机那边的任何事
已送达(DLR)网络回报了成功有人真的看到了

很多聚合商把第 1 或第 2 阶段就报成「已送达」。所以一个全绿的后台,跟一条都没到,是可以同时成立的。如果你的平台拿不出「已发送」和「已送达」两个不一样的数字,那你看到的就不是真实送达数据。

先确认一件事:你的短信是从马来西亚本地发的,还是从国外发进来的

这一条要放在所有排查动作的最前面,因为如果答案是「国外」,下面五个原因你查了也白查——问题不在文案、不在名单,在通道本身。

马来西亚运营商对境外来的国际短信过滤得远比本地严。中文互联网上大量「马来西亚短信发不出去怎么办」的文章,最后给出的结论其实是同一句:别用境外虚拟号,换成 +60 开头的本地通道。那些文章说得没错——只是它们自己卖的就是境外通道。

境外/国际通道马来西亚本地通道
短信从哪里进网从国外经国际网关转入直接从本地运营商发出
过滤强度高,且规则不公开按本地商务规则走
发送方显示常见随机长号或境外号段已注册短码
开户要求多要企业资质、内容模板报备邮箱加密码即可开始
计价货币人民币/美元令吉(RM)
失败时能查到什么常常只能拿到一句「已提交」可逐条对账,提交失败的退回额度

怎么判断自己现在走的是哪种:看三样东西——后台是不是用人民币或美元计价;开户时有没有被要求提交「短信模板」等审核;收件人手机上显示的发送方是不是一串陌生的长号码。三条里中了任意一条,你多半在走国际通道。

HantarSMS 走的是马来西亚本地注册短码,直连 Maxis、CelcomDigi、U Mobile、YES、Unifi,按令吉计价。这不代表本地通道就百分百送达(下面五个原因照样会发生),但它把「整批被国际网关吃掉」这一类失败从等式里拿掉了。

五个真实原因,按我们见到的频率排序

1. 发送方名称(Sender ID)没注册

如果你的短信显示的是品牌名(比如 MYSHOP),而这个名字从未在马来西亚运营商那里注册过,网络可以直接静默丢弃。自从全国打击诈骗短信以来,运营商对未注册的字母发送方名称收紧了非常多。不报错、不退费,你照样被扣钱。
解法:改走已注册的短码,或者 注册你自己的 Sender ID

2. 内容被关键词过滤

运营商跑关键词和模式匹配。含短链接、某些金融词汇、或者措辞像已知诈骗模板的短信,会在网络层被丢掉,跟你用哪家平台无关。
解法:用完整域名不要用短链,避开「立即」「马上验证」这类紧迫措辞,放量之前先用真实文案付费小量测试。
如果你做的是借贷、外汇、加密货币、账款催收这类天然容易触发过滤的行业, 偏门行业的短信文案该怎么写那篇讲得更细。

3. 号码本身不可达

已停用、携号转网到你的通道不覆盖的网络、不在服务区,或者干脆是被填进手机号栏位的固话。老的营销名单每年大约衰减 20–30%。
解法:清洗名单,把反复失败的号码剔掉,不要对从来没成功过的号码一遍遍重发。

4. 手机自己拦到垃圾短信文件夹

Android 和 iOS 都会把疑似垃圾短信归到单独的文件夹。短信确实送达了,只是收件人从来没看到通知。这一层在任何送达报告里都是不可见的。
解法:技术上无解。只发给真正同意接收的人、发真正相关的内容,是唯一有效的办法。

5. 编码发错了

如果含中文、淡米尔文或 emoji 的短信被当成 GSM-7 而不是 Unicode 发出去,所有非拉丁字符到手机上都会变成 ?。短信技术上是送达了,但读不了。这是平台的配置 bug,不是网络问题——而且比你以为的常见得多。
解法:大量买额度之前,先用你真正要用的语言给自己发一条。

为什么同一批短信,有的网络到了、有的没到

这是最容易被误判成「平台不稳」的现象。真实情况是:Maxis、CelcomDigi、U Mobile、YES、Unifi 是五套各自独立的过滤规则和审批流程。同一条文案在一家网络畅通、在另一家被丢,完全正常。

最典型的场景是 Sender ID:品牌名要逐家运营商分别审批,部分通过是常态。结果就是你的短信在某些网络能发、某些不能——而后台只会给你一个笼统的失败率,不会告诉你是按网络分布的。

怎么确认:把失败的号码按前缀分个组。马来西亚号段和运营商的对应关系因携号转网已经不可靠,但失败集中在某一两个前缀上仍是强信号。真要定位,最干净的办法是各家网络准备一个自己的测试号,同一条文案同时发,看谁没到。

突然发不出去了?先看是不是撞了限速

如果你前一批发得好好的,某一批开始大面积失败,而文案和名单都没变,那多半不是内容问题,是吞吐问题。短时间内灌入远超平时的量,会触发通道侧的限流甚至临时封禁。

具体的阈值不是一个可以写死在网页上的数字——它随通道类型、账号历史、当下的网络负载变。国际通道上这类限制通常最紧(每小时几十到上百条这种量级的说法都有),本地注册短码要宽松得多,但也不是无限的。重点是:任何跟你拍胸脯说「无限量随便发」的平台,要么在骗你,要么在把你往会被封的路上带。

解法:第一次放量前先跟平台确认你这个账号当前的实际吞吐上限;大批量分批发而不是一次性灌进去;量级要往上跳的时候提前打个招呼,而不是发完了才来问为什么失败。

十分钟自己诊断

  1. 给自己的号码发一条纯英文。到了吗?
  2. 用你实际要用的语言再发一条。是正常显示,还是一堆 ?
  3. 发给不同运营商的号码(Maxis / CelcomDigi / U Mobile 各一个)。
  4. 把你真正的营销文案发给自己。如果纯文本能到、营销文案到不了,那你面对的是内容过滤问题,不是送达问题。
  5. 下结论之前,先翻一下手机的垃圾短信文件夹。

每条测试就几分钱。在花钱发一万条之前把这五步做完,是短信营销里回报率最高的一个习惯。

对照表:什么症状对应什么原因

跑完上面五步之后,用这张表把结果对号入座。

你看到的症状最可能的原因怎么确认
全部失败,一条都没到通道/账号层面的问题,多半是走了国际通道或被限流先发一条纯英文给自己;查后台计价货币与发送方号码形态
纯文本能到,营销文案到不了内容被关键词过滤逐段删减文案重发,定位是哪一句触发的
某些网络到、某些不到逐家运营商规则差异,常见于未全部通过的 Sender ID各家网络各准备一个测试号,同一文案同时发
中文变成一串 ?编码发成了 GSM-7 而不是 Unicode用实际语言给自己发一条,看手机上的显示
之前一直正常,这批突然大面积失败撞了吞吐限速,或名单质量下降对比这批与上批的发送速率和名单来源
后台全绿,客户仍说没收到已送达但落进了手机的垃圾短信文件夹让客户翻一下垃圾短信;换一个自己的号码复现
失败率随时间缓慢爬升名单自然衰减(停机、换号)把连续多次失败的号码单独拉出来看占比

你该对平台有什么要求

没有人能保证送达——那是运营商说了算,而且他们不解释。平台能做的是对你老实:把「已提交」和「已送达」分成两个数字给你看,没发出去的退钱,在你付钱之前就告诉你内容大概率会被过滤,以及让你能便宜地先测。

用免费额度,先发到自己手机

我们给你免费试用额度,上面五步测试你可以一分钱不花跑完。