我收到此错误InvalidArgumentException无法在Laravel 5.6上解析[Illuminate \ Mail \ TransportManager]的NULL驱动程序,并且我在本地计算机和测试网站上都遇到此问题。我开始只使用带有smtp的gmail并且遇到了一些登录问题,所以我遇到了mailgun,然后设置了一切。我设置了.env文件(测试网站将驱动程序正确显示为mailgun)
MAIL_DRIVER=log
MAIL_HOST=smtp.mailgun.org
MAIL_PORT=587
MAIL_USERNAME=USERNAME
MAIL_PASSWORD=PWD
MAIL_ENCRYPTION=tls
我的配置/电子邮件如下
'mailgun' => [
'domain' => 'domain',
'secret' => 'key-xxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
],
'host' => env('smtp.mailgun.org', 'smtp.mailgun.org'),
'port' => env('587', 587),
'from' => [
'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'),
'name' => env('MAIL_FROM_NAME', 'Example'),
],
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'username' => env('uname'),
'password' => env('pwd'),
'sendmail' => '/usr/sbin/sendmail -bs',
'markdown' => [
'theme' => 'default',
'paths' => [
resource_path('views/vendor/mail'),
],
],
];
config / services是
'mailgun' => [
'domain' => env('domain'),
'secret' => env('key-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'),
],
'ses' => [
'key' => env('SES_KEY'),
'secret' => env('SES_SECRET'),
'region' => 'us-east-1',
],
'sparkpost' => [
'secret' => env('SPARKPOST_SECRET'),
],
'stripe' => [
'model' => App\User::class,
'key' => env('STRIPE_KEY'),
'secret' => env('STRIPE_SECRET'),
],
];
自从添加这些东西后我就遇到了问题。我已经得到输出到日志文件,正如我前面提到的使用gmail smtp我没有得到此驱动程序错误。我尝试使用maiables的laravel文档,但没有帮助。我使用此链接https://scotch.io/tutorials/easy-and-fast-emails-with-laravel-5-3-mailables作为指南,即便如此我也遇到了同样的错误。我在路线上做了一个dd
Route::get('test', function(){
dd(Config::get("mail"));
Mail::raw('Sending emails with Mailgun and Laravel is easy!', function($message)
{dd(Config::get("mail"));
$message->to('email@email.email');
});
});
以下结果
array:9 [▼
"mailgun" => array:2 [▼
"domain" => "domain"
"secret" => "key-xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
]
"host" => "smtp.mailgun.org"
"port" => 587
"from" => array:2 [▼
"address" => "hello@example.com"
"name" => "Example"
]
"encryption" => "tls"
"username" => null
"password" => null
"sendmail" => "/usr/sbin/sendmail -bs"
"markdown" => array:2 [▼
"theme" => "default"
"paths" => array:1 [▶]
]
]
不可否认我是Laravel的新手所以我非常渴望尝试解决这个问题,因为这是学习的最好方法,但即便谷歌我个人也没有找到很多帮助,所以我接触了一些SO的专家们。先感谢您。
答案 0 :(得分:1)
如果您想使用Mailgun,您应该在.env
:
MAIL_DRIVER=mailgun
这将告诉Laravel使用config/services
中的此配置:
'mailgun' => [
'domain' => 'domain',
'secret' => 'key-xxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
],
修改强>
将您的config/email.php
更改为this。复制粘贴替换当前配置中的所有内容,应该解决错误。您应该对config/services.php
执行相同的操作 - 从here复制。
原因:您从配置中删除了'driver' => env('MAIL_DRIVER', 'smtp'),
行,而Laravel无法解析驱动程序。
即使您只是添加此行,您也会遇到更多错误:
'username' => env('uname'),
'password' => env('pwd'),
env(..)
函数的第一个参数是.env
文件中要查找变量的行。如果在.env
中找不到变量,则第二个是默认值。您的环境中没有变量uname
和pwd
(至少从您显示的内容)。并且您也没有提供默认值。
长话短说,不要编辑您的邮件配置,而是编辑.env
文件中的变量。
答案 1 :(得分:0)