Laravel не отправляет электронную почту и не дает ошибок

Я работаю над проектом в течение последних четырех месяцев, и я действительно злюсь на то, с чем сейчас сталкиваюсь с Laravel. Он не отправляет электронные письма; Я настроил его на использование почтового драйвера и установил правильный код, но, похоже, он вообще не работает. Кроме того, не работает, это даже не дает мне ошибку!

Вот моя конфигурация:

return array( /* |-------------------------------------------------------------------------- | Mail Driver |-------------------------------------------------------------------------- | | Laravel supports both SMTP and PHP's "mail" function as drivers for the | sending of e-mail. You may specify which one you're using throughout | your application here. By default, Laravel is setup for SMTP mail. | | Supported: "smtp", "mail", "sendmail" | */ 'driver' => 'mail', /* |-------------------------------------------------------------------------- | SMTP Host Address |-------------------------------------------------------------------------- | | Here you may provide the host address of the SMTP server used by your | applications. A default option is provided that is compatible with | the Postmark mail service, which will provide reliable delivery. | */ 'host' => 'smtp.mailgun.org', /* |-------------------------------------------------------------------------- | SMTP Host Port |-------------------------------------------------------------------------- | | This is the SMTP port used by your application to delivery e-mails to | users of your application. Like the host we have set this value to | stay compatible with the Postmark e-mail application by default. | */ 'port' => 587, /* |-------------------------------------------------------------------------- | Global "From" Address |-------------------------------------------------------------------------- | | You may wish for all e-mails sent by your application to be sent from | the same address. Here, you may specify a name and address that is | used globally for all e-mails that are sent by your application. | */ 'from' => array('address' => null, 'name' => null), /* |-------------------------------------------------------------------------- | E-Mail Encryption Protocol |-------------------------------------------------------------------------- | | Here you may specify the encryption protocol that should be used when | the application send e-mail messages. A sensible default using the | transport layer security protocol should provide great security. | */ 'encryption' => 'tls', /* |-------------------------------------------------------------------------- | SMTP Server Username |-------------------------------------------------------------------------- | | If your SMTP server requires a username for authentication, you should | set it here. This will get used to authenticate with your server on | connection. You may also set the "password" value below this one. | */ 'username' => null, /* |-------------------------------------------------------------------------- | SMTP Server Password |-------------------------------------------------------------------------- | | Here you may set the password required by your SMTP server to send out | messages from your application. This will be given to the server on | connection so that the application will be able to send messages. | */ 'password' => null, /* |-------------------------------------------------------------------------- | Sendmail System Path |-------------------------------------------------------------------------- | | When using the "sendmail" driver to send e-mails, we will need to know | the path to where Sendmail lives on this server. A default path has | been provided here, which will work well on most of your systems. | */ 'sendmail' => '/usr/sbin/sendmail -bs', /* |-------------------------------------------------------------------------- | Mail "Pretend" |-------------------------------------------------------------------------- | | When this option is enabled, e-mail will not actually be sent over the | web and will instead be written to your application's logs files so | you may inspect the message. This is great for local development. | */ 'pretend' => false, ); 

Вот мой PHP-код для отправки электронной почты:

 $data["mail_message"] = "Hello!"; Mail::send('emails.welcome', $data, function($message) { $message ->to('me@mydomain.com') ->from('info@otherdomain.com') ->subject('TEST'); }); 

Прежде всего, перейдите в приложение / config / mail.php и измените драйвер на «mail». Также поставьте хост как пустой.

Это может быть потому, что у вас есть файл «.env» в корне проекта Laravel с настройкой почтового сервера следующим образом:

 ... MAIL_DRIVER=mail MAIL_HOST=mailtrap.io MAIL_PORT=2525 MAIL_USERNAME=null MAIL_PASSWORD=null MAIL_ENCRYPTION=null 

Кажется, что файл .env просто переопределяет файл config / mail.php. Вы можете просто удалить те же строки из файла «.env» для использования параметров конфигурации «config / mail.php».

Перейдите в файл .env и установите

 MAIL_DRIVER=smtp 

Или вы можете установить драйвер из конфигурационных файлов. Перейти к файлу Laravel 4: app / config / mail.php Laravel 5: config / mail.php и установить

 'driver' => 'smtp', 

Вы можете использовать SMTP. Надеюсь, это поможет.

Измените драйвер в файле конфигурации на «smtp» с «mail». Думаю, это должно сработать.

Если вы используете GMAIL для проверки входящей почты, просто убедитесь, что вы проверяете папку SPAM. [Лицо ладонь]

В моем сценарии электронная почта была поставлена ​​в очередь, поэтому я не получил выход. Я забыл, что по умолчанию я задал электронную почту в очереди . Я посмотрел в таблице рабочих мест, где видел все мои сообщения, ожидающие там. Я запустил php artisan queue:work чтобы запустить / отправить их в очередь.