跳转到正文
OmniChannels.ai

收不到验证码怎么办?短信验证码排查指南

短信验证码收不到的七类原因与排查表:号码格式、手机设置、发送方 ID、延迟与过期、风控误拦,以及送达报告的解读和备用渠道方案。

更新于 10 分钟阅读

作者: OmniChannels.ai Editorial Team · 审阅: BroadNet Messaging Solutions Team

短信与验证码

简短回答

验证码收不到通常是七类原因之一:号码错误或不是 E.164 格式;手机问题(无信号、漫游、收件箱已满、拦截了发送方);免打扰设置;运营商过滤了未注册或不被识别的发送方 ID;线路延迟或失败;验证码到达前已过期;风控拦截。请先看送达报告,它通常会指明原因。

本页内容
  1. 为什么收不到验证码?
  2. 送达状态能告诉您什么?
  3. 验证码收不到:诊断表
  4. 为什么验证码来得晚,或到达时已过期?
  5. 收不到验证码时,用户可以做什么?
  6. 防短信泵攻击的措施会拦截真实用户吗?
  7. 如何用送达报告找出规律?
  8. 短信失败时应该提供什么备用渠道?
  9. 应该监控什么?
  10. 常见错误有哪些?
  11. OmniChannels.ai 如何帮助您

要点速览

  • 先看消息的送达状态:DELIVERED 但手机上没有验证码,问题在设备;FAILED 或 REJECTED,问题在号码、发送方 ID 或线路;完全没有状态,问题在您自己的系统。
  • 号码应以 E.164 格式保存:加号、国家代码,总共最多15位数字。多余的前导零或缺少国家代码,是常见的失败原因,看起来却像网络问题。
  • 在要求注册的市场,未注册的发送方 ID,或运营商不认识的发送方 ID,可能被过滤。上线前请核对目的国的发送方 ID 规则。
  • NIST SP 800-63-4 规定,带外验证码若不在10分钟内使用即失效。设计重发和有效期时,要避免因为短信慢了而让验证码过期。
  • 风控可能误拦真实用户。请按国家和运营商统计从请求验证码到验证成功的转化率,并增加 WhatsApp 或语音这类第二渠道作为备用。

本指南写给用户反馈“没收到验证码”的产品、工程和客服团队,也写给用户本人。它用一张诊断表,把每种现象与原因、检查方法和解决办法对应起来,然后介绍送达报告、备用渠道,以及用来判断问题是否在好转的指标。关于如何把验证码发好,请阅读我们的验证码认证消息指南。

为什么收不到验证码?

验证码会在五个环节之一丢失:您的系统、号码、线路、运营商或手机。请从您自己这一侧向外排查,因为每一步在送达报告中留下的痕迹都不同。

  1. 您的系统根本没有发送,或发了两次而第一个验证码被覆盖。
  2. 号码错误、格式不对,或不是手机号。
  3. 线路拒绝、延迟或丢弃了消息。
  4. 运营商因发送方 ID、内容或流量特征而过滤了它。
  5. 手机无法接收或显示:没有信号、漫游、存储已满、拦截了发送方或开启了免打扰。

多数“收不到验证码”的工单最终都落在第2点和第5点,所以第一步检查永远是送达状态。

送达状态能告诉您什么?

最终状态能在您做其他测试之前,把排查范围缩小到五个环节之一。送达报告(DLR)是运营商网络为每条消息返回的回执;见送达回执和我们的消息送达状态指南。

您看到的状态 先查哪里
完全没有记录 您自己的应用:发送调用失败、被限流或根本没有发起
SUBMITTED 或 SENT,之后没有下文 线路或运营商,可能有延迟;等报告窗口过后,再检查线路
DELIVERED 手机:发送方被拦截、过滤文件夹、通知设置、第二张 SIM 卡
FAILED 或 REJECTED 号码、发送方 ID 或内容;请阅读错误代码

我们平台上的状态有 SUBMITTED、SENT、DELIVERED、READ、FAILED 和 REJECTED,通过 webhook 以统一格式送达您的系统。把原始报告粘贴到短信送达报告解码器中,就能翻译错误代码。有些网络从不返回最终报告,所以缺少 DELIVERED 应视为未知,而不是失败。

验证码收不到:诊断表

请把这张表当作检查清单。每一行包括现象、可能原因、要做的检查和解决办法。

现象 可能原因 检查 解决办法
立即 FAILED,提示号码无效 号码格式错误 把保存的号码与 E.164 对照 注册时统一为 E.164;用号码格式化工具校验
部分国家正常,部分国家失败 国家代码后保留了前导零,或保存的是国内格式 把失败的号码并排比较 去掉长途前缀,加上国家代码
DELIVERED,用户却什么也没看到 手机上发送方被拦截,或进了过滤文件夹 请用户查看拦截和垃圾短信列表 解除拦截;使用固定的发送方 ID
仅在某一家运营商上 REJECTED 或被过滤 发送方 ID 在该运营商处未注册或不被识别 核对目的国的发送方 ID 规则 注册发送方 ID;在每家运营商上测试
消息晚到几分钟 拥塞、线路慢,或手机不在覆盖范围 按运营商比较提交时间与送达时间 重发规则、更长的有效期、备用渠道
验证码到了却提示“已过期” 有效期短于实际送达时间 比较送达延迟与验证码有效期 延长有效期;重发时让旧验证码失效
用户在国外,什么也收不到 未开启漫游,或所在网络限制消息 询问是否开启了数据漫游和短信漫游 提供 WhatsApp 或语音验证码作为替代
触发频率限制规则后真实用户被拦截 风控过严 按国家和号段复查被拦截请求的日志 对已验证的模式放宽规则;增加申诉途径
号码最近转到了另一家运营商 携号转网的号码仍被路由到旧网络 运行号码查询 发送前使用查询数据
同一用户只在某张 SIM 卡上失败 双卡手机用另一张 SIM 卡接收 询问短信默认使用哪个号码 在账户上确认号码
模板里有 emoji 或特殊字符,显示出怪字符 编码改变 把模板放进字符计数器检查 验证码文案保持简洁纯文本,不加 emoji;中文短信本身是 Unicode,单段70个字符(拼接时每段67个)

有两项值得进一步说明。

号码是 E.164 格式吗?

E.164 是国际号码标准:一个加号、国家代码和用户号码,总共最多15位数字(ITU-T E.164)。例如存成 07700 900123 的英国手机号是国内格式。转成 E.164 后是 +447700900123,去掉了前导零。请在输入时就格式化,只保存一份干净的版本,原始输入仅用于展示。我们的电话号码格式化工具能展示转换过程,E.164 术语条目给出了定义。

会是发送方 ID 的问题吗?

会,当市场要求注册或过滤发送方 ID 时。字母数字发送方 ID,即显示品牌名而不是号码的方式,如果目的国要求注册而该 ID 不在运营商的名单上,就可能被拦截或改写。各国规则不同,请使用发送方 ID 检测工具,并阅读我们的发送方 ID 类型指南。如果您希望我们与您一起准备并提交注册,请见注册服务;审批决定仍由运营商和监管机构做出。

为什么验证码来得晚,或到达时已过期?

延迟通常来自线路或手机,而过期会把延迟变成失败。NIST SP 800-63B-4 规定,带外验证若不在10分钟内完成即失效,且验证码只能使用一次。这是高安全级别场景的上限,而不是目标值。请选择一个能涵盖正常送达波动、又不会让验证码开放过久的有效期。

实用规则:

  • 签发新验证码时,让旧验证码失效,并告诉用户只有最新的验证码有效。
  • 显示重发倒计时,避免用户反复点击,收件箱里堆满相互冲突的验证码。
  • 限制尝试次数和每个号码的请求次数,以防止猜测和滥用。
  • 记录发送时间、送达时间和验证时间,这样您看到的是真实的延迟,而不是猜测。

收不到验证码时,用户可以做什么?

给终端用户的一份简短清单,您可以放在验证页面或帮助内容中:

  1. 检查屏幕上显示的号码。号码对吗?国家代码对吗?
  2. 检查信号。移到有信号的地方,或开关一下飞行模式。
  3. 查看短信应用里的垃圾短信、已拦截或“陌生发送方”文件夹。
  4. 确认免打扰或通话和短信过滤没有把消息藏起来。
  5. 收件箱已满的话,腾出存储空间。
  6. 如果人在国外,请开启通话和短信的漫游,或改用其他方式。
  7. 等待重发倒计时结束,然后只重新获取一次验证码。反复请求可能触发限制。
  8. 仍然失败,请选择 WhatsApp 或语音来电等其他方式,或联系客服。

防短信泵攻击的措施会拦截真实用户吗?

会,而且如果不去衡量,这个代价是看不见的。短信泵攻击(SMS pumping),也叫人为流量膨胀,是攻击者向他们从中获利的号码触发验证码短信的欺诈手段。频率限制、国家白名单、号段拦截和机器人验证等措施能阻止它,但规则过宽会拒绝真实请求,例如来自您通常不服务的国家的新客户。我们的短信泵欺诈指南介绍了这类攻击;针对这个问题,关键点是:

  • 记录每个请求被拦截的原因,包括国家、号段和规则名称。
  • **把被拦截的请求与同一用户或设备之后成功的注册进行比对。**如果第一步被拦截的用户第二次尝试就成功了,说明您的规则在伤害真实的人。
  • 给被拦截的用户一条出路,而不是死路:第二渠道或客服链接。
  • 每次营销活动或上线后复查规则,因为来自新市场的流量一开始看起来会不寻常。

如何用送达报告找出规律?

按国家、运营商、发送方 ID、小时和错误代码切分送达数据,找出失败率远高于其他的那个细分。混合的平均值会掩盖薄弱环节。我们的提高短信送达率指南更详细地介绍了方法,发送前做 HLR 查询可以标记已停用或已更换网络的号码。

切分维度 峰值暗示什么
某一家运营商 您的发送方 ID 或内容被过滤,或该网络上的线路问题
某一个国家 缺少注册、监管规定,或防泵规则过严
某一个小时 拥塞,或您这边的一次发布
某一个错误代码 报告中点明的具体原因
某一个模板 触发过滤的内容或编码

短信失败时应该提供什么备用渠道?

在一段简短、固定的等待之后提供第二渠道,并让用户用起来简单。常见选项有:短信重发、WhatsApp 身份验证模板,或把验证码读出来的语音来电。

备用方式 适用情形 注意事项
短信重发 第一条消息延迟或被删除 多次重发看起来像滥用
WhatsApp 验证码 用户使用 WhatsApp 且已授权 身份验证是 Meta 的模板类别,有自己的规则
语音验证码 短信被拦截,或用户更喜欢接电话 使用起来较慢;语音价格请联系销售

我们对 WhatsApp 验证码与短信验证码的比较、语音验证码指南和渠道回退策略指南,展示了如何排列这些步骤的先后。WhatsApp 验证码必须作为 Meta 身份验证类别的模板发送,所以请按身份验证模板的格式构建,而不是使用自由文本。

应该监控什么?

跟踪验证码转化率:验证码请求中以验证成功告终的比例。公式如下:

验证码转化率 = 验证成功次数 / 验证码请求次数

按国家、运营商、渠道和发送方 ID 分别计算,并在任何一个细分明显低于其平时水平时设置告警。再配合送达延迟中位数和被风控规则拦截的请求占比。这三项合在一起,能告诉您问题出在触达、速度,还是您自己的风控。

常见错误有哪些?

  • **先怪运营商。**许多失败其实是格式或手机问题,送达报告本可以显示出来。
  • **在验证码短信里加多余内容。**emoji 和促销文字会改变编码并招致过滤。像 【品牌】验证码482913,10分钟内有效,请勿向任何人透露。 这样的简洁消息(31个字符)只占一段 Unicode 短信(70个字符以内)。
  • **没有重发次数限制。**这会招致滥用,也让用户面对多个有效验证码而困惑。
  • **只有单一渠道。**如果短信是唯一的选项,每个短信问题都会变成注册问题。
  • **不做衡量。**没有按细分统计的转化率,您只能从客服工单中得知失败。

OmniChannels.ai 如何帮助您

由 BroadNet 提供支持的 OmniChannels.ai,通过运营商直连发送验证码,并以统一格式通过 webhook 把送达状态返回您的系统。您可以按场景设置备用顺序,例如 WhatsApp 然后短信或语音,并在发送前使用 HLR 和号码查询。我们的团队会与您一起准备并提交发送方 ID 注册。请见验证码与通知解决方案,阅读 webhook 文档,或通过开发者页面申请测试权限。

常见问题

为什么我的手机收不到验证码?

常见原因有:没有信号或漫游受限、收件箱已满、发送方被拦截或过滤、免打扰设置、号码输错,或消息延迟。请重启手机,检查垃圾短信或拦截文件夹,确认账户上的号码,并等待重发倒计时结束后再重新获取验证码。

验证码多久能到?

多数在几秒内到达,但取决于运营商和线路,并没有保证。不要承诺具体时间。请显示重发倒计时,让验证码的有效期足够长,以应对较慢的送达,并在第一条消息没到时提供其他渠道。

为什么同一个网络上,有的用户收到验证码,有的收不到?

网络很少是全部原因。号码格式、手机设置、被拦截的发送方、漫游和携号转网的差异,都可能让同一家运营商的用户出现分化。请按运营商、国家和错误代码细分送达报告,找出哪一组在失败。

未注册的发送方 ID 会导致验证码无法送达吗?

会。在运营商或监管机构要求注册发送方 ID 的市场,未注册的 ID 可能被拦截或替换。请核对目的国的规则,在上线前注册,并在每家主要运营商上测试。我们的团队可以与您一起准备并提交注册。

验证码显示已送达,用户却说没收到,怎么办?

DELIVERED 状态表示运营商报告已把消息交给手机或其网络,所以请检查设备:发送方是否被拦截、是否进了过滤文件夹、通知设置,或是否有第二张 SIM 卡。请让用户查看垃圾短信文件夹,然后提供通过其他渠道重发。

防短信泵攻击的措施会拦截真实用户吗?

会。频率限制和按国家或号段的拦截能阻止虚假流量,但设得过严也会拒绝真实的人。请定期复查被拦截的请求,记录拦截原因,并给被拦截的用户一条通往第二渠道或客服的明确途径。

资料来源

  1. NIST SP 800-63B-4: Authentication and Authenticator Management
  2. ITU-T Recommendation E.164: The international public telecommunication numbering plan
  3. 3GPP TS 23.038: Alphabets and language-specific information
  4. GSMA: Interworking Security