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

Laravel报错Unsupported mail transport []的原因排查方案

你遇到的报错:

InvalidArgumentException Unsupported mail transport [].
vendor/laravel/framework/src/Illuminate/Mail/MailManager.php:175

问题原因

报错核心是邮件配置结构错误,框架读取SMTP传输配置时拿到空值,具体有4处问题:

  • config/mail.php中SMTP配置多嵌套了一层smtp数组键,框架按路径mail.mailers.smtp.transport读取配置时,找不到transport字段,直接返回空值触发报错。
  • env()函数使用错误:该函数第一个参数是.env中定义的变量名,第二个参数才是默认值,原配置直接把邮箱账号、密码写在第一个参数位置,框架无法正确读取对应值。
  • 注释位置错误:原配置把failover驱动和mailers数组的闭合括号一起注释掉,导致整个配置数组结构异常。
  • .env文件中MAIL_USERNAME、MAIL_PASSWORD字段为空,没有填入实际发信凭证。
修复方案
  1. 修正config/mail.php配置,去掉多余嵌套、调整注释位置、修正env()调用,正确配置如下:
return [

    'default' => env('MAIL_MAILER', 'smtp'),

    'mailers' => [
        'smtp' => [
            'transport' => 'smtp',
            'host' => env('MAIL_HOST', 'myserver.myhost.com'),
            'port' => env('MAIL_PORT', 465),
            'encryption' => env('MAIL_ENCRYPTION', 'ssl'),
            'username' => env('MAIL_USERNAME', 'mail@mydomain.com'),
            'password' => env('MAIL_PASSWORD', 'mypassword'),
            'timeout' => null,
            'auth_mode' => null,
        ],

        'ses' => [
            'transport' => 'ses',
        ],

        'mailgun' => [
            'transport' => 'mailgun',
        ],

        'postmark' => [
            'transport' => 'postmark',
        ],

        'sendmail' => [
            'transport' => 'sendmail',
            'path' => '/usr/sbin/sendmail -bs',
        ],

        'log' => [
            'transport' => 'log',
            'channel' => env('MAIL_LOG_CHANNEL'),
        ],

        'array' => [
            'transport' => 'array',
        ],
        
        /*
        'failover' => [
            'transport' => 'failover',
            'mailers' => [
                'smtp',
                'log',
            ],
        ],
        */
    ],


    'from' => [
        'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'),
        'name' => env('MAIL_FROM_NAME', 'Example'),
    ],


    'markdown' => [
        'theme' => 'default',

        'paths' => [
            resource_path('views/vendor/mail'),
        ],
    ],

];
  1. 补全.env中的邮件凭证,不要留空:
MAIL_MAILER=smtp
MAIL_HOST=myserver.myhost.com
MAIL_PORT=465
MAIL_USERNAME=mail@mydomain.com
MAIL_PASSWORD=你的发信邮箱实际密码/授权码
MAIL_ENCRYPTION=ssl
MAIL_FROM_ADDRESS=mail@mydomain.com
MAIL_FROM_NAME="${APP_NAME}"
  1. 执行命令清除配置缓存,避免旧配置干扰:
php artisan config:clear
php artisan cache:clear
校验方法

修复后可以执行php artisan tinker,输入config('mail.mailers.smtp')打印配置,返回结果中存在transport => "smtp"字段即说明配置加载正常,再测试发信即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 22:27:35