I'm trying to send an email to a specified user by typing in the URL, but I'm getting the following error:
Swift_TransportException in AbstractSmtpTransport.php line 383: Expected response code 250 but got code "530", with message "530 5.7.1 Authentication required
So far I'm just trying to get it to work with Gmail. How can I get this to work?
This is what I have so far: mail.php
<?php
return [
'driver' => env('MAIL_DRIVER',' smtp'),
'host' => env('MAIL_HOST', 'smtp.gmail.com'),
'port' => env('MAIL_PORT', 587),
'from' => ['address' =>"MyUsername@gmail.com" , 'name' => "example"],
'encryption' => 'tls',
'username' => env('MyUsername@gmail.com'),
'password' => env('MyPassword'),
'sendmail' => '/usr/sbin/sendmail -bs',
'pretend' => false,
];
This is what I have in the routes:
Route::get('test', function() {
Mail::send('Email.test', [], function ($message) {
$message->to('example@gmail.com', 'HisName')->subject('Welcome!');
});
});
This is what I have in my controller:
class MailController extends Controller
{
public function Sending_Email()
{
$this->call('GET','Email.test');
return View('Email.test');
}
}
And this is what is in my .env file:
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=MyUsername@gmail.com
MAIL_PASSWORD=MyPassword
You are getting an authentication error because the username and password in your config file is setup wrong.
Change this:
To this:
The
env
method checks your .env file. In your .env file you call theseMAIL_USERNAME
, so that's what you need to pass to theenv
method.One troubleshooting tip: add
dd(Config::get('mail'));
so that you can see the actual generated config. This will help you spot issues like this, and know exactly what information Laravel is going to try and use. So you may want to stop that in your test route temporarily to examine what you have:It happens to me also.
If still not worked try doing
php artisan config:cache
For development purpose https://mailtrap.io/ provides you with all the settings that needs to be added in .env file. Eg:
Otherwise for implementation purpose you can get the smtp credentials to be added in .env file from the mail (like gmail n all)
After addition make sure to restart the server
If your results from
dd(Config::get('mail'));
are null simply use the commandFinally I got! Just to share, there are more config than just .env
This is .env
config/mail.php also need to input address & name for it to work.
i've had the same problem; my 'MAIL_ENCRYPTION' was 'tls' on mail.php but it was 'null' on .env file so i changed 'null' to 'tls' and it worked!