你点击了忘记密码、通过电子邮件链接登录,或者你开启了双重身份验证(2FA),但包含重置链接、登录链接或验证码的邮件始终没有送达。在所有这些情况下,Frappe 都会将邮件加入队列,并依赖站点自身的发件邮件设置来实际发送它——因此,解决办法几乎总是出在电子邮件账户或电子邮件队列中,而不是密码重置或 2FA 功能本身。
错误信息
通常屏幕上根本不会显示任何错误——你只是一直收不到邮件。如果确实有错误,通常是下面这个,在你尝试通过电子邮件链接登录时会以弹窗形式显示:
Please setup default outgoing Email Account from Tools > Email Account
或者,如果已配置账户但配置有误,会显示在电子邮件队列条目自身的错误字段中:
Invalid Outgoing Mail Server or Port: Connection unexpectedly closed
如果你遇到的是通用的服务器错误,或者提到 reset_password 的堆栈跟踪,而不是上述任一情况,请跳到“如果这样仍无法解决”。
为什么会发生这种情况
Frappe 不会在你请求的那一刻就发送密码重置、登录链接或 2FA 邮件。它会将邮件写成一个新的电子邮件队列条目,并从那里发送,使用被标记为默认发件的那个电子邮件账户。双重身份验证邮件也走同样的路径:如果双重身份验证方式是电子邮件或短信,Frappe 会在每次登录时以同样的方式通过邮件或短信发送验证码;即使使用 OTP 应用方式,在用户首次开启 2FA 时,Frappe 也会在身份验证器应用被视为注册完成之前,先发送一封设置确认邮件。
因此,所有这三种症状——收不到重置邮件、收不到登录链接、收不到 2FA 验证码——通常都归结为同样的两件事:是否存在一个可用的默认发件电子邮件账户,以及电子邮件队列是否实际发送了该条目。如果这两者都不是原因,邮件仍可能被送达,但被当作垃圾邮件过滤掉,或者因队列自身的发送间隔而被延迟。
如何解决
- 打开电子邮件账户列表(在 Awesome Bar 中搜索“Email Account”)。检查至少有一个账户勾选了启用发件,并且在发件(SMTP)设置下恰好有一个账户勾选了默认发件。如果没有任何账户勾选,请打开一个可用的账户,勾选这两个复选框,然后保存。
- 打开电子邮件队列列表,找到你期望的那封邮件的条目(按收件人筛选,或按最后更新时间排序以查看最新的)。检查其状态:
- 错误:打开该条目并阅读错误字段。此处出现服务器/端口/身份验证相关的消息,意味着默认发件账户的 SMTP 设置不正确——请在电子邮件账户中修正它们并重新发送。
- 未发送或发送中:队列尚未将其发出。默认情况下,队列每 4 分钟发送一次(站点的
scheduler_interval)。等待几分钟,或者请拥有 bench 访问权限的系统管理员立即运行它:bench --site [site-name] execute frappe.email.queue.flush。 - 已发送:在 Frappe 这一侧投递已成功。请转到第 3 步。
- 如果队列显示已发送但邮件仍未送达,请先检查收件人的垃圾邮件或废件文件夹。如果邮件一直被过滤,很可能是发送域名缺少该电子邮件账户域名的 SPF 或 DKIM DNS 记录——请让管理该域名 DNS 的人员按照邮件服务商公布的值添加它们。
- 在 Frappe Cloud 上,如果站点使用的是内置的电子邮件投递服务应用而不是你自己的 SMTP 账户,请确认它没有达到套餐的发送上限。请参阅“升级电子邮件投递服务套餐”。电子邮件配置本身的产品支持取决于你站点的支持计划层级。
- 如果缺失的邮件具体是 2FA 验证码或设置邮件,请先重新检查第 1 步——这是同一个默认发件原因,而不是单独的 2FA 问题。如果第 1 步已经正确,请打开系统设置 → 登录,确认双重身份验证方式与你期望的一致(OTP 应用、短信或电子邮件)。
若要在不等待邮件的情况下让被锁定的用户重新登录,系统管理员可以在系统设置 → 登录中取消勾选启用双重身份验证,临时为所有人关闭 2FA;或者通过从全部角色中移除双重身份验证权限,将其限定到特定角色。在底层邮件问题解决后,再重新开启它。
如果这样仍无法解决
- 如果错误是提到
reset_password或AttributeError的服务器堆栈跟踪,而不是缺少默认发件账户,那么这是代码层面的问题,通常与最近的版本升级有关,而不是电子邮件配置问题。请提交支持工单,附上来自错误日志的完整堆栈跟踪以及站点的 Frappe 和应用版本(帮助 → 关于)。 - 如果电子邮件队列条目显示已发送,SPF/DKIM 已经正确,但电子邮件仍然从未到达,请提交支持工单。请包含站点名称、电子邮件队列条目的名称和状态,以及这是影响一个用户还是所有人。
如何预防
- 只保留一个标记为默认发件的电子邮件账户,并在任何更改后通过给自己发送密码重置或登录链接电子邮件来进行测试。
- 如果您添加或更改电子邮件账户,请重新检查默认发件——新账户很容易忘记设置,或者两个账户都标记为发件但都没有设为默认。
相关
- 电子邮件账户
- 如果收件人没有收到电子邮件怎么办
- 设置双因素认证
- 升级电子邮件投递服务计划