Firebase Auth邮件验证问题:调用sendEmailVerification()未收到邮件
Firebase Authentication 邮件验证无法接收的问题排查与修复
代码层面优化
你当前代码存在用户对象获取不一致的问题:登录后先用userCredential.user判断验证状态,之后又调用FirebaseAuth.instance.currentUser发送验证邮件,可能导致用户状态不同步。另外缺少对邮件发送操作的异常捕获,无法排查发送失败的具体原因。优化后的代码如下:
ElevatedButton( onPressed: () async { try { final userCredential = await FirebaseAuth.instance .signInWithEmailAndPassword( email: 'ibrahim.1995.ho@gmail.com', password: 'tod123456tod'); print(userCredential.user?.emailVerified); if (userCredential.user?.emailVerified == false) { // 直接使用登录返回的user对象,避免状态不同步 await userCredential.user?.sendEmailVerification(); print(userCredential.user?.email); } } on FirebaseAuthException catch (e) { if (e.code == 'user-not-found') { print('该邮箱未注册用户'); } else if (e.code == 'wrong-password') { print('密码错误'); } } catch (e) { // 捕获邮件发送时的异常,方便排查问题 print('发送验证邮件失败: $e'); } }, child: const Text('登录'), ),
其他排查方向
- 检查垃圾邮件文件夹:验证邮件常被邮箱服务商归类到垃圾邮件、促销邮件文件夹,先去这些位置查找。
- Firebase控制台配置检查:
- 进入项目的Authentication模块,查看「Templates」下的「Email verification」模板是否启用,内容配置正常。
- 确认「Settings」中的「Email provider」已启用,若使用自定义SMTP,检查配置信息是否正确。
- 验证邮箱有效性:确认目标邮箱地址拼写正确、状态正常,没有屏蔽Firebase发送的邮件(部分企业邮箱会拦截第三方验证邮件)。
- 避免发送频率过高:Firebase对邮件发送有频率限制,短时间内多次请求可能被限流,间隔一段时间后再尝试。
内容的提问来源于stack exchange,提问作者AHMAD Tod
相关产品推荐
相关产品推荐

