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' => '[email protected]', 'name' => 'hawle'),
4 answers
В вашем файле .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' => '[email protected]', '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
(как сказал ОП). - Файл
.env
расположен в корне вашего проекта. - Mailtrap.io это сервис для тестирования SMTP. На самом деле он не отправляет электронные письма.
Как упоминал Виктор Минер: Примите во внимание создание паролей приложений и отказ от использования вашего обычного пропуска для этих целей. Ссылка для создания паролей myaccount.google.com/apppasswords
Убедитесь, что вы установили "от" в app/config/mail.php
'from' => ['address' => '[email protected]', 'name' => 'myname']
Это устранит проблему.
Если у вас нет доступа к файлу .env, вы можете добавить значения по умолчанию к этим вызовам env app/config/mail.php , вот так:
'from' => ['address' => env('MAIL_FROM_EMAIL','[email protected]'), 'name' => env('MAIL_FROM_NAME','SpongeBob')],
Этот подход попытается получить данные из файла .env, если там ничего нет, по умолчанию будет установлено все, что вы установили.
Файл:/bootstrap/cache/config.php
Изменение:
'mail' => array(
'driver' => 'smtp',
'host' => 'mail.yourserversiteemail.com',
'port' => '25',
'from' =>
array(
'address' => '[email protected]',
'name' => 'sd',
),
'encryption' => 'tls',
'username' => 'yourUsername',
'password' => 'yourPass',
'sendmail' => '/usr/sbin/sendmail -bs',