唯一的要求
你的应用需要能向任意地址发信。处于沙盒或测试模式的邮件服务商只向你验证过的地址发信,所以它们的邮件无法到达任何测试收件箱,包括我们的。
在应用中检查地址
在应用中,从账号菜单打开 Troubleshoot,然后粘贴地址。它会显示是否有该地址的邮件到达我们这里,以及我们拒收了什么、原因是什么。
我们拒收邮件时,Accounts 中该地址所在行也会注明。等待了几分钟仍没有邮件的地址会显示 Not arriving? 链接。
什么都没到达我们这里?那么邮件在到达我们之前就停住了。按下面的原因逐一排查。
所有地址同时收不到邮件,包括以前能收到的?请查看我们的状态页是否有故障。
常见原因
- 应用的邮件服务商只向已验证的地址发信。沙盒和测试模式,例如获得生产访问权限之前的 Amazon SES,或没有域名的 Resend,会悄悄跳过其他所有地址。见下方的服务商列表。
- 应用没有发送这封邮件。在应用日志或其邮件服务商的控制台中查找这封邮件。注册失败、在设置中关闭了邮件、后台任务出错,从我们这边看都一样。
- 服务商跳过了该地址。如果之前发往该地址的邮件被退回(例如在地址过期后),服务商可能已把它加入抑制列表,不会再向它发信。把它从列表中移除,或使用新地址。
- 地址输错了。从该地址所在行复制,不要重新输入。名字后加 +tag 没问题:name+run2@ 仍会送到 name@。
- 应用被限速了。认证服务会限制邮件数量:Supabase 的内置邮件每小时发送 2 封(使用你自己的 SMTP 时默认每小时 30 封),Amazon Cognito 的每个 AWS 账号每天 50 封。频繁注册的测试套件往往会先触及上限。
- 地址已过期或其项目已归档。发往它的邮件会被拒收。在地址过期前延长有效期,或创建新地址。
- 我们拒收了。超过 5 MB 的邮件会被拒收,每个地址每小时最多接收 60 封邮件,来自少数大型消费类服务(例如 Instagram 或 TikTok)的邮件也会被拒收,除非项目设置了例外。我们拒收邮件时,地址上会显示拒收内容和原因。
只向部分地址发信的邮件服务商
应用刚起步时很常见。每一项都是应用邮件服务商中的一个设置;服务商不发的邮件,任何测试收件箱都收不到。
Amazon SES
新账号从沙盒开始,只向已验证的地址和域名发信。每个 AWS 区域都有自己的沙盒。解决方法:为应用发信所在的区域申请生产访问权限。文档
Supabase Auth 的内置邮件
只向你 Supabase 项目团队的成员发信,并且每小时只发 2 封。解决方法:在 Authentication 下设置自定义 SMTP。如果你的测试经常注册,再在 Rate Limits 下提高每小时邮件上限。文档
Resend
在你验证域名之前(使用 onboarding@resend.dev 发信时),它只向你自己的 Resend 账号邮箱发信。解决方法:验证一个域名,并从该域名下的地址发信。文档
Mailgun
沙盒域名最多只向 5 个授权收件人发信,且每人都需要确认。解决方法:从你自己的域名发信。这需要 Mailgun 的付费套餐或已绑定银行卡。文档
Postmark
在 Postmark 批准账号之前,它只向你已验证域名下的地址发信。解决方法:在你的 Postmark 账号中申请批准。文档
Firebase Authentication、Clerk 和 SendGrid 会向任意地址发信。Auth0 和 Amazon Cognito 的内置发信服务也是如此,但 Auth0 每分钟只发 10 封,Cognito 每个 AWS 账号每天只发 50 封(计数在 UTC 09:00 重置),所以测试时请设置你自己的服务商。
Proxy Mail QA 会拒收什么
发往不存在、已删除或已过期地址的邮件会被拒收。对于有效地址,以下情况我们会拒收:
- 过大。邮件超过 5 MB,这是我们接受的上限。发件方已被告知不要重试,所以邮件不会到达。
- 每小时上限。该地址在过去一小时内已收到 60 封邮件。发件方已被要求稍后重试,所以邮件仍可能到达。
- 每日上限。你的空间已达到每日邮件上限。发件方已被要求稍后重试,所以邮件可能会在上限于 UTC 午夜重置后到达。
- 被屏蔽的网站。Proxy Mail QA 不支持该网站,所以其邮件会被拒收,不会到达。如果你获得了许可来测试它,项目负责人可以在 Project settings 中申请例外。
每一项都会连同时间显示在该地址上。我们只保留原因、时间和大小,从不保留发件人或邮件内容,并且会随地址一起删除。
在到达我们之前被拒收
我们的邮件服务器由 Cloudflare 提供。它们会在 Proxy Mail QA 看到邮件之前拒收部分邮件:最常见的原因是发信域名未通过 SPF、DKIM 或 DMARC 检查,有时是邮件被丢弃或无法投递。每一封都会以 blocked 状态显示在该地址上,附带发件方域名、其 SPF、DKIM 和 DMARC 检查结果及原因;等待没有结果时给出的提示也会说明这一点。修复发信域名的记录通常就能解决问题,而且这不只关系到测试:真实的收件箱也会拒收同样的邮件。
仍未解决?
发邮件到 hello@proxymail.qa,写明测试地址、应用向它发信的时间(注明你的时区)以及应用使用的邮件服务商。请不要发送密码或 API 密钥。