Не удалось разрешить драйвер NULL для [Illuminate \ Mail \ TransportManager] - PullRequest
0 голосов
/ 12 мая 2018

Я получаю эту ошибку InvalidArgumentException Не удалось разрешить драйвер NULL для [Illuminate \ Mail \ TransportManager] на Laravel 5.6, и у меня возникла эта проблема как на локальном компьютере, так и на тестовом веб-сайте в Интернете.Я начал использовать только gmail с smtp, и у меня возникли некоторые проблемы со входом в систему, поэтому я наткнулся на 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'),
  ],

  ];

С тех пор, как я добавил этот материал, у меня возникла проблема.Я получаю вывод в файл журнала и, как я упоминал ранее, при использовании SMTP Gmail я не получил эту ошибку драйвера.Я попробовал документы Laravel, используя Maiables, и это не помогло.Я использовал эту ссылку https://scotch.io/tutorials/easy-and-fast-emails-with-laravel-5-3-mailables в качестве руководства, и даже тогда я получил ту же ошибку.Я сделал дд на маршруте

  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, поэтому я очень хотел попытаться решить эту проблему, так как этолучший способ учиться, но даже с Google я лично не нашел много помощи, поэтому я обращаюсь к некоторым из экспертов здесь на SO.Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 07 августа 2018

Скопируйте содержимое это в вашем config / services.php и это в вашем config / mail.php

И добавьте это в конец вашего app.php

$app->configure('services');    
$app->configure('mail');
0 голосов
/ 12 мая 2018

Если вы хотите использовать Mailgun, вы должны изменить это в вашем .env:

MAIL_DRIVER=mailgun

, который скажет Laravel использовать этот конфиг с config/services:

'mailgun' => [
    'domain' => 'domain',
    'secret' => 'key-xxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
],

Редактировать:

Изменить config/email.php на это .Копировать вставить заменить все в вашей текущей конфигурации, и ошибка должна быть устранена.Вы должны сделать то же самое для config/services.php - скопируйте с здесь .

Причина: вы удалили строку 'driver' => env('MAIL_DRIVER', 'smtp'), из вашей конфигурации, и Laravel не может разрешить драйвер.

Даже если вы просто добавите эту строку, вы столкнетесь с большим количеством ошибок из-за этих строк:

'username' => env('uname'),

'password' => env('pwd'),

Первый аргумент для функции env(..) указывает, какую строку в файле .env искатьпеременная.2nd является значением по умолчанию, если переменная не найдена в .env.У вас нет переменных uname и pwd в вашей среде (по крайней мере, из того, что вы показали).И вы также не предоставляете значение по умолчанию.

Короче говоря, не редактируйте вашу почтовую конфигурацию, вместо этого измените переменные в файле .env.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...