Laravel配置SMTP后无法将发送邮件保存至storage/maildump文件夹
解决Laravel邮件无法保存至/storage/maildump目录的问题
你的核心问题是错误地在SMTP驱动配置中添加了log选项,这个配置在SMTP驱动下不会生效——SMTP驱动的作用是连接邮件服务器发送邮件,而非将邮件保存到本地文件。要实现邮件存到指定目录,需切换到file邮件驱动,具体操作如下:
1. 修改默认邮件驱动
打开config/mail.php,将默认驱动改为file:
'default' => env('MAIL_MAILER', 'file'),
2. 配置File邮件器
在mailers数组中添加(或修改)file驱动的配置:
'mailers' => [ // 保留原SMTP配置(如需切换回发送模式可复用) 'smtp' => [ 'transport' => 'smtp', 'url' => env('MAIL_URL'), 'host' => env('MAIL_HOST', '127.0.0.1'), 'port' => env('MAIL_PORT', 2525), 'encryption' => env('MAIL_ENCRYPTION', 'tls'), 'username' => env('MAIL_USERNAME'), 'password' => env('MAIL_PASSWORD'), 'timeout' => null, 'local_domain' => env('MAIL_EHLO_DOMAIN', parse_url(env('APP_URL', 'http://localhost'), PHP_URL_HOST)), ], // 添加File驱动配置 'file' => [ 'transport' => 'file', 'path' => storage_path('maildump'), ], ],
3. 同步环境变量配置
打开.env文件,确保邮件驱动设置为file:
MAIL_MAILER=file
4. 验证目录权限
确保storage/maildump目录拥有写入权限,可执行以下命令(根据服务器运行用户调整):
chmod -R 755 storage/ # 或针对nginx/apache用户 chown -R www-data:www-data storage/
5. 测试邮件发送
重新发送邮件后,storage/maildump目录下会生成以.eml为后缀的邮件文件。如果仍为空,可查看storage/logs/laravel.log排查错误(如权限不足、配置未生效等)。
内容的提问来源于stack exchange,提问作者Asario
相关产品推荐
相关产品推荐

