Laravel Homestead Swift Не удается отправить сообщение без адреса отправителя

Я получаю эту ошибку с настройками электронной почты в Laravel 5.1 Homestead, когда я пытаюсь отправить почту для сброса пароля.

Swift_TransportException in AbstractSmtpTransport.php line 162:Cannot send message without a sender address 

Адрес заполняется в app / config / mail.php:

 'from' => array('address' => 'myusername@gmail.com', 'name' => 'hawle'), 

В вашем .env файле вам нужно будет указать адрес электронной почты и пароль вашей учетной записи электронной почты. Вам также необходимо установить хост и порт используемого почтового сервера.

 MAIL_DRIVER=smtp MAIL_HOST=smtp.gmail.com MAIL_PORT=25 MAIL_USERNAME= ***USER NAME*** MAIL_PASSWORD= ***PASSWORD*** MAIL_ENCRYPTION=tls 

Или убедитесь, что все выполнено в вашем файле mail.php (см. Примечание ниже).

 'host' => env('MAIL_HOST', 'smtp.gmail.com'), /* |-------------------------------------------------------------------------- | SMTP Host Port |-------------------------------------------------------------------------- | | This is the SMTP port used by your application to deliver e-mails to | users of the application. Like the host we have set this value to | stay compatible with the Mailgun e-mail application by default. | */ 'port' => env('MAIL_PORT', 25), /* |-------------------------------------------------------------------------- | 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' => ['address' => 'myusername@gmail.com', 'name' => 'hawle'], /* |-------------------------------------------------------------------------- | 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' => env('MAIL_ENCRYPTION', 'tls'), 

Примечание. Лучше использовать файл .env , так как вы, скорее всего, будете иметь другую конфигурацию в рабочей среде.

Если все будет завершено и все равно не будет работать, это может быть кеширование. Вы можете очистить кеш конфигурации следующим образом:

 php artisan config:cache 

Также обратите внимание:

  • Порт 465 предназначен для Gmail. Если он не работает, вы можете использовать 25.
  • Файл mail.php находится в /app/config/mail.php (как сказал OP).
  • Файл .env находится в корне вашего проекта.
  • Mailtrap.io – это сервис для тестирования SMTP. Он действительно не отправляет электронные письма.

Как отметил Viktorminator: учтите создание паролей приложений и не используя свой обычный пропуск для этих нужд. Ссылка для создания паролей myaccount.google.com/apppasswords

Убедитесь, что вы установили 'from' в app / config / mail.php

 'from' => ['address' => 'myname@gmail.com', 'name' => 'myname'] 

Это устранит проблему.

Если у вас нет доступа к файлу .env, вы можете добавить значения по умолчанию для тех env-вызовов в app / config / mail.php, как это:

  'from' => ['address' => env('MAIL_FROM_EMAIL','do_not_reply@email.com'), 'name' => env('MAIL_FROM_NAME','SpongeBob')], 

Этот подход попытается получить данные из файла .env, если там ничего нет, по умолчанию будет установлено то, что вы установили.

Файл: /bootstrap/cache/config.php
Изменение:

 'mail' => array( 'driver' => 'smtp', 'host' => 'mail.yourserversiteemail.com', 'port' => '25', 'from' => array( 'address' => 'panel@yourserversiteemail.com', 'name' => 'sd', ), 'encryption' => 'tls', 'username' => 'yourUsername', 'password' => 'yourPass', 'sendmail' => '/usr/sbin/sendmail -bs',