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

Laravel 8如何配置mail.php实现生产发真实邮件、开发发测试地址

解决方案

方案1:基于环境变量自动切换(最简便)

直接修改你的config/mail.php中的to配置段,通过Laravel自带的APP_ENV环境变量判断运行环境,非生产环境才启用全局收件人覆盖:

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

// 修改后的to配置
'to' => env('APP_ENV') !== 'production' ? [
    'address' => 'xxxxx.yyyy@domain.com',
    'name' => env('APP_NAME', 'Example'),
] : null,

逻辑说明:

  • 当.env文件中APP_ENV的值为production时,to配置项为null,Laravel不会启用全局收件人覆盖,邮件会正常发送到业务代码指定的真实收件地址
  • 当APP_ENV为local、testing等非生产值时,自动启用全局收件人配置,所有邮件都会发送到你指定的测试邮箱,可正常查看邮件渲染效果,不会误发用户

方案2:更灵活的可配置版本

如果需要不同开发人员自定义测试收件人,不需要修改配置文件,可以把测试收件人也放到.env配置中:

  1. 先在你的.env文件中新增两个配置项:
# 非生产环境测试收件人配置
MAIL_TEST_TO_ADDRESS=xxxxx.yyyy@domain.com
MAIL_TEST_TO_NAME=开发测试收件人
  1. 再修改config/mail.php的to配置:
'to' => env('APP_ENV') !== 'production' ? [
    'address' => env('MAIL_TEST_TO_ADDRESS', 'default-test@example.com'),
    'name' => env('MAIL_TEST_TO_NAME', env('APP_NAME', 'Example')),
] : null,

注意事项

  • 请确保生产环境的.env文件中APP_ENV的值严格为production,否则会出现生产环境邮件误发到测试邮箱的问题
  • 生产环境如果开启了配置缓存,修改.env配置后需要执行php artisan config:cache使配置生效
  • 如果需要临时在本地测试发送邮件到真实收件人,只需要临时把本地.env的APP_ENV改为production,测试完成后改回local即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 21:15:04