I am using Laravel Mail function to send email. The following is my app/config/mail.php
file settings.
'driver' => 'sendmail', 'host' => 'smtp.gmail.com', 'port' => 587, 'from' => array('address' => '[email protected]', 'name' => 'MyName'), 'encryption' => 'tls', 'username' => 'myUsername', 'password' => "password", 'sendmail' => '/usr/sbin/sendmail -bs', 'pretend' => false,
Controller Mail Method
//Send Mail Mail::send('sendMail', array('key' => 'value'), function($message) { $message->to('[email protected]', 'Sender Name')->subject('Welcome!'); });
When I run the code it gives me following error message:
Swift_TransportException
Expected response code 220 but got code "", with message ""
I have created a SendMail.php
file in view which contains some data.
How do I resolve this error message?
This problem can generally occur when you do not enable two step verification for the gmail
account (which can be done here) you are using to send an email
. So first, enable two step verification
, you can find plenty of resources for enabling two step verification. After you enable it, then you have to create an app password
. And use the app password
in your .env
file. When you are done with it, your .env
file will look something like.
MAIL_DRIVER=smtp MAIL_HOST=smtp.gmail.com MAIL_PORT=587 MAIL_USERNAME=<<your email address>> MAIL_PASSWORD=<<app password>> MAIL_ENCRYPTION=tls
and your mail.php
<?php return [ 'driver' => env('MAIL_DRIVER', 'smtp'), 'host' => env('MAIL_HOST', 'smtp.gmail.com'), 'port' => env('MAIL_PORT', 587), 'from' => ['address' => '<<your email>>', 'name' => '<<any name>>'], 'encryption' => env('MAIL_ENCRYPTION', 'tls'), 'username' => env('MAIL_USERNAME'), 'password' => env('MAIL_PASSWORD'), 'sendmail' => '/usr/sbin/sendmail -bs', 'pretend' => false, ];
After doing so, run php artisan config:cache
and php artisan config:clear
, then check, email should work.
In my case I had to set the
MAIL_DRIVER=smtp MAIL_HOST=smtp.gmail.com MAIL_PORT=465 <<<<<<<------------------------- (FOCUS THIS) MAIL_USERNAME=<<your email address>> MAIL_PASSWORD=<<app password>> MAIL_ENCRYPTION= ssl <<<<<<<------------------------- (FOCUS THIS)
to work it.. Might be useful. Rest of the code was same as @Sid said.
And I think that editing both environment file and app/config/mail.php is unnecessary. Just use one method.
Edit as per the comment by @Zan
If you need to enable tls protection use following settings.
MAIL_PORT=587 MAIL_ENCRYPTION= tls
See here for some other gmail settings
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With