You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 07:45:33