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

Firebase是否支持含智能撇号等Unicode字符的邮箱?创建后发验证邮件报错

Firebase Auth 含非ASCII字符邮箱验证报错解决办法

问题说明

通过firebase.auth().createUserWithEmailAndPassword创建包含Unicode智能撇号(U+2019)的邮箱用户(示例:trap’py@gmail.com)可以成功,但调用firebase.auth().currentUser.sendEmailVerification发送验证邮件时,会触发以下错误:

{"code":"auth/invalid-recipient-email","message":"Missing recipients"}

仅使用纯ASCII字符的邮箱时功能正常,测试其他非ASCII字符也会出现相同问题,且Firebase官方的「发送用户验证邮件」文档未提及国际化邮箱的支持情况。

解决方案

  1. 将国际化邮箱转换为Punycode编码
    国际化邮箱(IDN邮箱)需要转换为Punycode格式后,再传入Firebase Auth的相关方法。比如把trap’py@gmail.com转换为对应的Punycode格式(注:不同非ASCII字符转换结果不同,需用工具或代码实现准确转换)。
    前端可借助punycode库(Node.js内置,前端可通过npm引入)完成转换,示例代码:

    import punycode from 'punycode';
    // 拆分邮箱的本地名和域名
    const [localPart, domainPart] = 'trap’py@gmail.com'.split('@');
    // 转换本地名为Punycode
    const encodedLocal = punycode.encode(localPart);
    // 拼接成转换后的邮箱
    const encodedEmail = `${encodedLocal}@${domainPart}`;
    // 使用转换后的邮箱执行创建用户或发送验证邮件操作
    

    注意:部分邮箱服务商对本地部分的非ASCII字符支持不同,转换后需确认邮箱仍可正常接收邮件。

  2. 注册阶段过滤非ASCII字符
    在用户注册时添加邮箱校验逻辑,检测到非ASCII字符时提示用户使用纯ASCII格式的邮箱,从源头避免后续验证报错。

  3. 向Firebase反馈需求
    如果业务必须支持国际化邮箱,可向Firebase官方提交反馈工单,说明该场景的使用需求,推动官方完善对国际化邮箱的支持。

问题原因

Firebase Auth的邮件验证服务目前未完全兼容RFC 6532定义的国际化邮箱标准,无法正确解析含非ASCII字符的收件人邮箱,因此抛出「Missing recipients」错误。

内容的提问来源于stack exchange,提问作者traPPy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 16:37:44