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

Laravel9部署服务器后日文发件人名称显示????乱码如何解决

Laravel 9 服务器环境邮件发件人日文乱码解决

问题现象

  • 本地开发环境:.env中MAIL_FROM_NAME配置的日文发件人名称显示正常
    本地环境正常发件人效果
  • 服务器生产环境:同配置下发件人名称显示为????乱码
    服务器环境乱码效果
  • 本次测试使用的日文发件人文本为「コトナル」

解决步骤

按以下顺序排查,绝大多数场景下前3步即可解决问题:

  • 检查服务器PHP编码配置
    执行php -i | grep charset查看PHP当前默认字符集,若不是UTF-8,修改php.ini对应配置:
    default_charset = "UTF-8"
    mbstring.internal_encoding = UTF-8
    
    修改完成后重启PHP-FPM、Nginx/Apache服务生效。
  • 修正Laravel邮件全局配置
    打开项目下config/mail.php,确认存在UTF-8编码配置,缺失则补充:
    'charset' => 'utf-8',
    
    不要将该值改为ISO-8859-1等单字节编码,这类编码不支持日文、中文等多字节字符。
  • 规范环境变量写法并清除缓存
    打开项目根目录.env文件,给MAIL_FROM_NAME的值加上双引号,避免特殊字符解析异常:
    MAIL_FROM_NAME="コトナル"
    
    执行以下命令清除旧的配置缓存:
    php artisan config:clear
    php artisan cache:clear
    
    验证功能正常后,生产环境可以再执行php artisan config:cache重载缓存提升加载效率。
  • 排查SMTP服务端兼容问题
    临时将邮件驱动改为log,在服务器本地触发邮件发送,查看storage/logs下的邮件日志里发件人名称是否正常:
    • 如果日志里名称正常,说明是所用SMTP服务商不支持UTF-8发件人名称,可联系服务商调整,或在发信时手动做MIME编码。
    • 如果日志里已经是乱码,回到前两步重新检查系统、PHP、Laravel的编码配置。
  • 兜底编码方案
    以上配置都正常仍乱码的话,在对应的邮件类(Mailable)中手动对发件人名称做MIME头编码,避免传输过程中被转码:
    public function build()
    {
        return $this->from(
            config('mail.from.address'),
            mb_encode_mimeheader(config('mail.from.name'), 'UTF-8')
        )
        ->subject('邮件主题')
        ->view('对应邮件模板路径');
    }
    

内容的提问来源于stack exchange,提问作者shahab ud din gohar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 07:57:27