阿里云短信
阿里云短信服务接入指南——推荐个人开发者使用短信认证服务
阿里云提供两种短信方案,适用场景不同:
| 方案 | 个人可用 | 免备案/免签名审核 | 能发的通知类型 |
|---|---|---|---|
| 短信认证服务(PNVS) | ✅ | ✅ | 仅验证码 |
| 普通短信服务(SMS) | ❌ 需企业资质 | ❌ 需自建签名模板 | 验证码 + 通知 + 营销 |
个人开发者强烈推荐「短信认证服务」:无需企业资质、无需备案签名模板、开通即可用,专门用于注册/登录/找回密码等验证码场景。这是目前国内大厂中对个人开发者最友好的短信方案。
方案一:短信认证服务(推荐个人开发者)
短信认证服务是阿里云号码认证服务(PNVS)的一部分,专门为验证码场景设计。个人实名认证即可开通,阿里预置好签名和模板,无需自己申请审核。
开通步骤
登录控制台
访问 号码认证服务控制台,用个人阿里云账号登录。
开通短信认证服务
点击「短信认证服务」开通。个人实名认证的阿里云账号可以直接开通,无需企业资质、无需备案。
获取 AccessKey
点击阿里云控制台右上角个人账号,在展开菜单里打开 AccessKey。按提示完成安全校验后,创建或复制 AccessKey ID 和 AccessKey Secret。

注意最终要填的是 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 是性价比最高的选择,不需要为了发几条验证码去折腾企业资质。
相关资源
这篇文档有问题?