00 / 00

阿里云短信

阿里云短信服务接入指南——推荐个人开发者使用短信认证服务

阿里云提供两种短信方案,适用场景不同:

方案个人可用免备案/免签名审核能发的通知类型
短信认证服务(PNVS)仅验证码
普通短信服务(SMS)❌ 需企业资质❌ 需自建签名模板验证码 + 通知 + 营销

个人开发者强烈推荐「短信认证服务」:无需企业资质、无需备案签名模板、开通即可用,专门用于注册/登录/找回密码等验证码场景。这是目前国内大厂中对个人开发者最友好的短信方案。

方案一:短信认证服务(推荐个人开发者)

短信认证服务是阿里云号码认证服务(PNVS)的一部分,专门为验证码场景设计。个人实名认证即可开通,阿里预置好签名和模板,无需自己申请审核。

开通步骤

登录控制台

访问 号码认证服务控制台,用个人阿里云账号登录。

开通短信认证服务

点击「短信认证服务」开通。个人实名认证的阿里云账号可以直接开通,无需企业资质、无需备案。

获取 AccessKey

点击阿里云控制台右上角个人账号,在展开菜单里打开 AccessKey。按提示完成安全校验后,创建或复制 AccessKey ID 和 AccessKey Secret。

阿里云账号菜单中的 AccessKey 入口

注意最终要填的是 AccessKey ID 和 AccessKey Secret,不是账号 ID。Secret 只显示一次,丢了只能禁用旧密钥后重新创建。

主账号 AccessKey 配置最简单,适合个人项目快速跑通。生产环境里更安全的做法是创建 RAM 子用户,只给它短信验证码相关权限,再使用这个子用户的 AccessKey。

配置环境变量

短信是共享基础能力,默认写到 packages/config/.env

SMS_PROVIDER=aliyun
ALIBABA_CLOUD_ACCESS_KEY_ID=你的AccessKeyId
ALIBABA_CLOUD_ACCESS_KEY_SECRET=你的AccessKeySecret
ALIYUN_SMS_REGION=cn-hangzhou
# 短信认证服务不需要自建签名和模板,使用预置即可

当前 01MVP 模板由 Better Auth 的 phoneNumber 插件生成并校验验证码,所以发送短信时会把 Better Auth 生成的验证码值传给阿里云。阿里云在这条链路里只负责把验证码短信发出去。

价格

短信认证服务按套餐包计费,价格实惠:

套餐包价格单价
5,000 条250 元0.05 元/条
50,000 条2,250 元0.045 元/条
500,000 条20,000 元0.04 元/条

以 5000 条 / 250 元的套餐为例,一个日活 100 人的小产品,假设每天 10 次验证码登录,约能用 500 天,平均每天不到 0.5 元。对于个人项目来说成本很低。

短信认证服务只能发验证码,不能发营销、广告或通知类短信。对于个人项目来说这通常是够用的——登录、注册、找回密码就是最常见的验证码场景。

为什么个人开发者应该选这个?

  • 个人实名即可开通:不需要企业营业执照、不需要备案
  • 免签名模板审核:阿里预置好签名和模板,不需要自己提交审核等 2-4 小时
  • 成本低:验证码短信单价与普通短信一致,没有额外成本
  • 限制就是优点:只发验证码意味着你的短信通道更干净、不容易被运营商拦截

和 EasyStarter 文档的差异

EasyStarter 的示例让阿里云生成验证码,并通过 CheckSmsVerifyCode 校验。这个仓库当前使用 Better Auth 的 phoneNumber 插件,验证码由 Better Auth 生成并校验,阿里云只负责把这个验证码发出去。

因此这里的发送参数会使用真实验证码值,例如 {"code":"123456","min":"5"},不会使用 {"code":"##code##","min":"5"}。如果改成 ##code##,用户收到的是阿里云生成的验证码,但 Better Auth 仍会校验自己生成的验证码,登录会失败。

方案二:普通短信服务(需企业资质)

如果你确实需要发送通知类短信(如订单状态变更、活动提醒等),或者你的团队已有企业资质,可以使用阿里云普通短信服务。

普通短信服务需要企业实名认证 + 自建短信签名 + 自建短信模板,所有签名和模板都需要人工审核(通常 2-4 小时)。变量类模板的审核要求非常严格,对个人开发者来说门槛较高。

开通步骤

开通短信服务

登录 阿里云短信控制台,开通短信服务并完成企业资质认证。

创建签名和模板

在「短信签名」和「短信模板」中分别创建,审核通过后获取 SignName 和 TemplateCode。签名需要与你的网站/应用名称一致,模板中如使用变量(如 ${code})需说明用途。

获取 AccessKey

从阿里云控制台右上角账号菜单进入 AccessKey 管理,创建或复制 AccessKey ID 和 AccessKey Secret。

配置环境变量

当前模板的 SMS_PROVIDER=aliyun 默认走 PNVS 验证码接口,不再把普通短信作为默认路径。确实要接普通短信时,建议新增单独 provider 或直接在业务侧接阿里云普通短信 SDK,不要复用手机号登录这条验证码通道。

国内短信服务现状(个人开发者须知)

目前国内对短信发送的管控非常严格,主要目的是防止骚扰短信:

  • 腾讯云:2025 年 9 月起个人不能新建自用资质/签名,基本等于个人无法使用国内短信
  • 阿里云普通短信:需要企业资质 + 备案签名模板,变量类内容审核严格
  • 阿里云短信认证(PNVS):个人可用、免备案、仅限验证码——这是目前国内唯一对个人开发者真正友好的短信方案

如果你的产品只需要验证码登录(大多数独立产品都是这样),PNVS 是性价比最高的选择,不需要为了发几条验证码去折腾企业资质。

相关资源

这篇文档有问题?