Trying to get Laravel 5 email to work

2019-01-06 09:17发布

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

18条回答
爷的心禁止访问
2楼-- · 2019-01-06 09:20

the problem will be solved by clearing cache

php artisan config:cache
查看更多
趁早两清
3楼-- · 2019-01-06 09:20

That simply means that your server does not have access to the SMTP Server.

You can test this by doing:

telnet <smtpServer> <smtpPort>

You should get the Access denied error.

The solution is to just use another SMTP server that can be accessed by your server.

查看更多
该账号已被封号
4楼-- · 2019-01-06 09:22
  1. You go to the Mailgun
  2. Click Authorized Recipients
  3. Add the email address you wish send mail to.
  4. Verify the message sent to the mail.
  5. Bravo!...You're good to go.
查看更多
等我变得足够好
5楼-- · 2019-01-06 09:25

I had the same problem as you, I just got it to work.

Firstly, you need to double check that the .env settings are set up correctly. Here are my settings:

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=yourusername
MAIL_PASSWORD=yourpassword
MAIL_ENCRYPTION=tls

Please make sure that your password is not between quotes :).

And in config/mail.php it has the following, without the comments.

<?php

return [

'driver' => 'smtp',
'host' => env('MAIL_HOST', 'smtp.gmail.com'),
'port' => env('MAIL_PORT', '587'),
'from' => ['address' => 'yourusername', 'name' => 'yourname'],
'encryption' => env('MAIL_ENCRYPTION','tls'),
'username' => env('MAIL_USERNAME', 'username@gmail.com'),
'password' => env('MAIL_PASSWORD', 'password'),
'sendmail' => '/usr/sbin/sendmail -bs',

'pretend' => false,

];

Hope it works for you :)

查看更多
看我几分像从前
6楼-- · 2019-01-06 09:29

I know it's working for you now @Vantheman6 but this is what worked for me in case it's the same for someone else.

I added to my .env file the details of the mail service I am using. So make sure the following details

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=MyUsername@gmail.com
MAIL_PASSWORD=MyPassword

in the .env file are accurate.

NOTE: Don't forget to restart your server after editing the .env file so it will pick the new data that you put in there.

If you don't restart your server, the .env file will still continue to present the old mail data to the app even though you have made changes which can cause this error.

查看更多
我命由我不由天
7楼-- · 2019-01-06 09:29

For future reference to people who come here. after you run the command that was given in the third answer here(I am using now Laravel 5.3).

php artisan config:cache

You may encounter this problem:

[ReflectionException]
Class view does not exist

In that case, you need to add it back manually to your provider list under the app.php file. GO-TO: app->config->app.php->'providers[]' and add it, like so:

Illuminate\View\ViewServiceProvider::class,

Hope That helps someone.

查看更多
登录 后发表回答