Laravel Homestead Swift Cannot send message without a sender address
In your .env
file you will need to set the email address and password of your email account. You also need to set the host and port of the mail server you are using.
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=25
MAIL_USERNAME= ***USER NAME***
MAIL_PASSWORD= ***PASSWORD***
MAIL_ENCRYPTION=tls
Or make sure that everything is complete in your mail.php
file (see note below).
'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'),
Note: It's better to use the .env
file, as you most likely will have a different configuration in your production environment.
If everything is completed and it still doesn't work, it might be caching. You can clear the config cache with this:
php artisan config:cache
Also note:
- Port 465 is for Gmail. If it does not work, you can use 25.
- The
mail.php
file is located at/app/config/mail.php
(as OP said). - The
.env
file is located at the root of your project. - Mailtrap.io is a service for testing SMTP. It does not really send emails.
As Viktorminator mentioned: Take into consideration creating app passwords and not using your usual pass for this needs. Link for creating passwords myaccount.google.com/apppasswords
Make sure you have set the 'from' in app/config/mail.php
'from' => ['address' => '[email protected]', 'name' => 'myname']
It will fix the problem.
Maybe someone is using laravel 6
Its problem is "Cannot send message without a sender address" so there is no email address to send the email in .env
file
Just add sender email address
MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=your_username
MAIL_PASSWORD=your_password
MAIL_ENCRYPTION=null
[email protected] **here**
MAIL_FROM_NAME="${APP_NAME}"
I didn't change anything in the mail.php file, its work for me in laravel 6, after that run
php artisan config:cache
Managed to fix this by doing the following
Goto .env file
Make sure the value for MAIL_FROM_ADDRESS
is set.
MAIL_MAILER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=***USERNAME**
MAIL_PASSWORD=***PASSWORD***
MAIL_ENCRYPTION=tls
MAIL_FROM_NAME="${APP_NAME}"
MAIL_FROM_ADDRESS=no-reply@YOURDOMAIN