如何使用Firebase Auth向新注册用户发送验证邮件?
Firebase Auth验证邮件发送失败的修复方案
核心问题定位
你的代码里在发送验证邮件前执行了signOut(auth),这会导致auth.currentUser变为null,sendEmailVerification调用时没有有效用户对象,自然无法触发邮件发送。
修正后的代码
const handleSignup = async (email, pswd) => { try { // 创建用户并直接获取用户对象,避免依赖auth.currentUser的状态 const userCredential = await createUserWithEmailAndPassword(auth, email, pswd); const user = userCredential.user; // 必须在登出前发送验证邮件 await sendEmailVerification(user); // 后续操作:清空表单、登出 setSignupEmail(""); setSignupPassword(""); setSignupPasswordAgain(""); signOut(auth); alert("Check your email for a verification link."); } catch (err) { console.log(err); } };
额外排查点
- 检查收件邮箱的垃圾邮件/推广文件夹,验证邮件可能被自动归类
- 登录Firebase控制台,确认Auth > 模板中的验证邮件模板已启用且配置正常
- 避免使用临时邮箱注册,这类域名大概率会被邮件服务拦截
- 调用
sendEmailVerification时添加await,确保邮件请求完全发送后再执行后续操作
内容的提问来源于stack exchange,提问作者Sana
相关产品推荐
相关产品推荐

