错误:
在我的mail.php文件中,如果我设置
'driver' => env('MAIL_DRIVER'),
并将此文件发送到我的.env文件:
MAIL_DRIVER=log
然后我收到以下错误:
Swift_TransportException in AbstractSmtpTransport.php line 383:
Expected response code 250 but got code "530",
with message "530 5.7.1 Authentication required"
糟糕的解决方法
在我的mail.php文件中,我有以下内容:
'driver' => 'log',
工作正常。
结论
我的理论是mail.php没有正确读取我的.env文件常量,因为用实际的字符串替换它会修复问题。但是,此文件的默认值都使用.env常量,所以我想知道为什么我的.env常量在我的mail.php文件中无法识别?
FYI
在同一个应用程序中除了mail.php之外的其他文件中,我正在使用其他工作正常的.env常量。例如,在我的UserTableSeeder类中,我有:
factory(App\User::class, 1)->create([
'email' => env('ADMIN_EMAIL'),
'password' => Hash::make(env('ADMIN_PASSWORD')),
'is_admin' => 1
]);
成功地使用了我的.env文件中的以下常量:
ADMIN_EMAIL=xxxxxxx@yahoo.com
ADMIN_PASSWORD=xxxxxxx
我尝试了以下2个php工匠命令(php artisan cache:clear和php artisan config:clear),但是" smtp" " log"继续输出是我在.env文件中的内容:
04:52:54 Fri May 13 vagrant@homestead (email_notifications) [130]
~/Code/myapp $ php artisan config:clear
Configuration cache cleared!
05:52:56 Fri May 13 vagrant@homestead (email_notifications) [0]
~/Code/myapp $ php artisan tinker
Psy Shell v0.6.1 (PHP 7.0.2-4+deb.sury.org~trusty+1 — cli) by Justin Hileman
>>> dd(env('MAIL_DRIVER'));
"smtp"
>>> exit
Exit: Goodbye.
05:53:23 Fri May 13 vagrant@homestead (email_notifications) [0]
~/Code/myapp $ php artisan cache:clear
Application cache cleared!
05:53:48 Fri May 13 vagrant@homestead (email_notifications) [0]
~/Code/myapp $ php artisan tinker
Psy Shell v0.6.1 (PHP 7.0.2-4+deb.sury.org~trusty+1 — cli) by Justin Hileman
>>> dd(env('MAIL_DRIVER'));
"smtp"
答案 0 :(得分:0)
我不确定你是否已经解决了。但我会尝试提供一种过于简单的解决方案。
简答:您需要在.env
文件中进行更改时立即重启应用程序。
不那么长答案:这种情况正在发生,因为laravel应用程序已经访问了您的.env
文件。如果在应用程序在本地计算机上运行时对.env
文件进行更改,则无法立即识别它。您必须关闭整个laravel应用程序并使用$ php artisan serve
重启一次。
这样做,肯定会占用环境常数,你会得到理想的结果。
希望这会帮助你。快乐的编码。欢呼声。
答案 1 :(得分:0)
.env文件中可能有默认常量,其中包含MAIL_DRIVER=sftp
的常量。如果为同一常量添加其他值,则FIRST常量将定义。因此,请确保.env文件中只有1个常量定义,或者至少如果出于某种原因需要多个常量,则至少将它作为第一个。