邮箱验证码 API:发送验证码和接收验证码的区别
“邮箱验证码 API 接口”其实指两件相反的事:一种是发送,你的网站把验证码发到用户邮箱;另一种是接收,你的脚本拿到一个邮箱地址,读出别的网站发到这个地址的验证码。OTPGmail 只做接收,不替任何网站发信。
后端开发者、测试工程师和做自动化工具的人,常常在这个词上走错方向。下面先用一张表分清你要哪一种,再分别讲两边要注意什么。
30 秒判断:你要“发”还是“收”
| 你想做的事 | 属于 | 需要的东西 | OTPGmail 能不能做 |
|---|---|---|---|
| 给自己网站或 App 的用户发注册码、登录码、找回密码邮件 | 发送 | SMTP 发信,或者云厂商的邮件推送服务 | 不能 |
| 用 QQ 邮箱、163 邮箱的 SMTP 在小项目里发验证码 | 发送 | 邮箱的 SMTP 服务和授权码 | 不能 |
| 测试自己网站的注册流程,确认验证邮件真的能送达 | 发送 + 接收 | 你的发信通道,加一个能读取验证码的收件邮箱 | 能,负责接收这一半 |
| 在脚本或测试里注册别的网站,读出它发来的验证码 | 接收 | 一个能收信的真实邮箱,以及读取验证码的接口 | 能 |
| 找“自动获取邮箱验证码的软件” | 接收 | 同上 | 能,但它是网页和 API,不是需要安装的软件 |
一句话:验证码从你的服务器发出去,就是发送侧;验证码从别人的服务器发过来、要你去读,就是接收侧。
发送邮箱验证码 API:要点清单
OTPGmail 不提供发信服务,也不推荐具体厂商。但无论你用哪家,发验证码这件事都绕不开下面几点:
- 在服务器生成验证码:用安全的随机数生成,只保存验证码的哈希,设置较短的有效期,用过一次就作废。
- 限频和限次:同一个邮箱地址两次发送之间要有间隔,每天设上限;输错几次就要求重新获取。这能防止接口被滥用,向别人的邮箱大量发信。
- 发信通道:个人 QQ 邮箱、163 邮箱的 SMTP 要先在网页版设置里开启服务,用“授权码”代替登录密码;发送量有限,只适合原型和内部工具。正式产品用自己的发信域名,配置好 SPF、DKIM 和 DMARC,验证邮件才不容易进垃圾箱。
- 邮件模板:验证码放在最显眼的位置,写明有效期,并提醒“如果不是你本人操作,请忽略这封邮件”。
如果用户看到“验证码发送失败:未配置邮箱发送服务”之类的提示,通常说明这个网站后台还没有配置发信参数,要由网站管理员处理,用户换邮箱也没用。
发信接好以后,最好再验证一下邮件能不能真的送达常见邮箱。这时就用得上接收侧:做法见自动化测试怎么处理邮箱验证码。
接收邮箱验证码 API:OTPGmail 的三步调用
“接码 API 是什么”?在邮箱这一侧,就是一个替你准备收件邮箱、再把收到的验证码返回给你的接口。注意:搜索结果里很多“接码 API”说的是手机号收短信的接口,和这里是两回事;OTPGmail 只处理邮箱,不提供手机号。
OTPGmail 租给你的是真实的 @gmail.com 或 @icloud.com 邮箱。每个请求都在请求头里带上你自己的 API 密钥:Authorization: Bearer og_...。
GET /v1/services:查服务代码、价格和库存。比如 GitHub 是git,列表里没有的网站用ot(任意服务)。返回里的icloud不为null,说明这个服务可以租 iCloud 邮箱。POST /v1/orders:请求体{"service": "git", "domain": "gmail.com"},domain可以不传,默认 gmail.com。同时带上新的Idempotency-Key请求头,超时重试时沿用同一个,就不会重复租用。返回的data是数组,每个邮箱一个订单。GET /v1/orders/{orderId}:把email填进目标网站的表单之后,每 3–5 秒查一次。接口没有回调通知,只能轮询。
订单里你最常用的几个字段:
| 字段 | 含义 |
|---|---|
email |
分配给你的地址,填进注册表单 |
status |
waiting_code 等待中 → completed 已收到第一个验证码,或 cancelled 已取消并退款 |
otp |
收到的验证码数组,最早的在前、最新的在最后,每项有 code 和 receivedAt |
codeDeadlineAt |
到这个时间(Unix 秒)还没有验证码,系统自动取消订单并全额退款 |
不想等了,可以在第一个验证码到达前调用 POST /v1/orders/{orderId}/cancel,费用 100% 退回;什么都不做,到时间也会自动取消退款,最长 25 分钟,退款规则见退款与质保政策。完整的 Python 写法和错误码处理,见用 Python 接收邮箱验证码。
“邮箱验证码怎么直接提取出来”也是常见问题。用 OTPGmail 时,系统已经把验证码或验证链接提取到 otp[].code 里;少数邮件提取不出来,code 里会是整封邮件的原文,这时用正则自己找就行。
授权码、API 密钥、验证码:别混在一起
很多人卡住,是因为把这三个东西当成了一回事:
| 名称 | 谁给你的 | 用来做什么 |
|---|---|---|
| 邮箱授权码 / 应用专用密码 | 你自己的邮箱服务商 | 让邮件客户端或程序登录你自己的邮箱,用来发信或收信 |
OTPGmail 的 API 密钥(以 og_ 开头) |
OTPGmail,在“API 文档”或“账户”页面查看 | 调用 /v1 接口,费用从你的余额扣 |
| 验证码 | 你注册的那个网站 | 证明你能收到发往这个地址的邮件 |
所以:用 QQ 邮箱 SMTP 发验证码,要的是授权码;调用 OTPGmail 收验证码,要的是 API 密钥;租用的邮箱不会给你密码或授权码,你也不需要。API 密钥只放在服务器或 CI 里,不要写进网页前端或手机 App。
收费、错误与限额
接收接口按次计费:分配到邮箱才扣费,价格和网页上租用一样,调用 API 本身不收费,详见产品与价格。常见错误码:
NO_MAILS_AVAILABLE:暂时没有可用邮箱,不扣费,稍后再试。INSUFFICIENT_BALANCE:余额不足,先充值。DOMAIN_UNAVAILABLE:这个服务暂时不提供 iCloud,改用gmail.com。VALIDATION_ERROR:请求字段有误,先核对服务代码。RATE_LIMITED(HTTP 429):请求太快,按响应头Retry-After给出的秒数等待后再试。
请求频率和单次可租数量的具体限额,以 API 文档为准。只在你自己的项目,或目标平台条款允许的范围内使用。使用前请确认符合该平台的服务条款和你所在地的法律法规;OTPGmail 只提供接收验证邮件的邮箱,不提供绕过平台或地区限制的方法。
常见问题
邮件验证码接口有哪些?
大致三类:发信类(SMTP、云厂商的邮件推送接口),用来给你的用户发验证码;读信类(IMAP,或者邮箱服务商自己的接口),用来读你自己邮箱里的邮件;租用邮箱接收类,比如 OTPGmail 的 /v1,每次给你一个新的真实邮箱并返回验证码。
能用 OTPGmail 群发验证码吗?
不能。OTPGmail 只接收邮件,租来的邮箱也不能发信。给自己的用户发验证码,请用发信服务。
谷歌邮箱 API 接码是什么意思?
通常是指通过接口拿到一个 @gmail.com 地址,并读取发到这个地址的验证码。在 OTPGmail,就是 POST /v1/orders 时 domain 用 gmail.com;你拿到的只是验证码,不是这个 Gmail 账号的登录权限。
收不到验证码会扣钱吗?
不会。到 codeDeadlineAt 仍没有验证码,订单自动取消并全额退回余额;第一个验证码到达前自己取消,也一样全额退款。
