40

I'm trying to send an email from Gmail using Laravel from localhost. I'm getting this error: Connection could not be established with host smtp.gmail.com [ #0]

I'm using ssl with port 465. I also tried 587 but it didn't work.

I also tried this but it didn't work. I found a lot of people suffering from the same problems, but the solutions I found didn't work.

Community
  • 1
  • 1
omarsafwany
  • 3,695
  • 8
  • 44
  • 75

8 Answers8

32

Editor's note: disabling SSL verification has security implications. Without verification of the authenticity of SSL/HTTPS connections, a malicious attacker can impersonate a trusted endpoint (such as GitHub or some other remote Git host), and you'll be vulnerable to a Man-in-the-Middle Attack.

Be sure you fully understand the security issues before using this as a solution.

In Laravel project directory, edit config/mail.php and add the following:

'stream' => [
        'ssl' => [
            'allow_self_signed' => true,
            'verify_peer' => false,
            'verify_peer_name' => false,
        ],
    ]

It worked for me.

Fyi, my SMTP settings are:

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=465
MAIL_USERNAME=[Full Gmail Address]
MAIL_PASSWORD=[Google App Password obtained after two step verification on Google Account Page]
MAIL_ENCRYPTION=ssl
miken32
  • 42,008
  • 16
  • 111
  • 154
Ahmed Numaan
  • 1,034
  • 1
  • 10
  • 26
20

This one line change in .env file will make it work

MAIL_DRIVER=sendmail

If it also has no effect try to switch between the mail port

MAIL_PORT=587

Or

MAIL_PORT=465

This will work only if you enable "Allow Less secure app access" under google account

Akeel ahamed
  • 877
  • 11
  • 11
9

In your .env file you will need to set the email address and password of your email account:

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=test@gmail.com
MAIL_PASSWORD=testpassword

and in mail.php

<?php

return [
    'driver' => env('MAIL_DRIVER', 'smtp'),
    'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
    'port' => env('MAIL_PORT', 587),
    'from' => ['address' => 'yourEmail@gmail.com', 'name' => 'Your Title'],
    'encryption' => 'tls',
    'username' => env('MAIL_USERNAME'),
    'password' => env('MAIL_PASSWORD'),
    'sendmail' => '/usr/sbin/sendmail -bs',
    'pretend' => false,
];

and clear the config cache with:

php artisan config:cache
Community
  • 1
  • 1
Adnane
  • 99
  • 1
  • 1
5

here's what is working with me

MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=<your email>
MAIL_PASSWORD=<your app password>
MAIL_ENCRYPTION=tls

if you are two auth verification with your account , should be generate new app password and use into you env file. this is what working with me.

Fahd Allebdi
  • 354
  • 4
  • 7
3

Have you tried changing the encryption to tls? I currently use a Gmail SMTP sever to send emails from my Laravel app. I use TLS and port 587

Chris Townsend
  • 2,586
  • 2
  • 21
  • 41
  • Thats work for me! when I use apache in windows, I need to put tls. So maybe it's an ssl configuration problem. – rebduvid Sep 17 '17 at 20:36
3

in localhost you can set your MAIL_DRIVER=smtp but on real server like cpanel you must to set MAIL_DRIVER=sendmail and edit your config/mail.php 'default' => env('MAIL_MAILER', 'sendmail'), but its not good idea because after you send mail on google you get error on gmail like this :

Be careful with this message Gmail could not verify that it actually came from tenetup.reminderme@gmail.com. Avoid clicking links, downloading attachments, or replying with personal information.

0

Change mail driver in both .env and mail.php into MAIL_DRIVER=mailgun

0

Hi If you Try all Things and Nothing to do then please Enable SMTP Restrictions then again Disable it (in WHM Account) . Its Working for me.