Laravel 5.4 SMTP错误"首先发送AUTH命令"

时间:2017-02-24 09:32:53

标签: php laravel email smtp laravel-5.4

我尝试使用smtp从localhost发送邮件时出现以下错误:

  

预期的响应代码250,但得到了代码" 503",带有消息" 503 5.5.4   错误:首先发送AUTH命令。 "

.ENV

MAIL_DRIVER=smtp
MAIL_HOST=smtp.yandex.com
MAIL_PORT=465
MAIL_USERNAME=robot@domain.com
MAIL_PASSWORD=11111111
MAIL_ENCRYPTION=ssl
MAIL_FROM=robot@domain.com
MAIL_NAME=MY.NAME

配置/ mail.php

 <?php
    return [
        'driver' => env('MAIL_DRIVER', 'smtp'),
        'host' => env('MAIL_HOST', 'smtp.yandex.com'),
        'port' => env('MAIL_PORT', 465),
        'from' => [
            'address' => 'robot@domain.com',
            'name' => 'MY.NAME',
        ],
        'encryption' => env('MAIL_ENCRYPTION', 'ssl'),
        'username' => env('robot@domain.com'),
        'password' => env('11111111'),
        'sendmail' => '/usr/sbin/sendmail -bs',
    ];

尝试:更改端口,加密,清除缓存,以所有可能的组合重新启动服务器。 :) 正如我所看到的,还有一个参数需要传递给邮件库。有点像

auth_mode=login_first

这可以通过laravel设置完成吗?

1 个答案:

答案 0 :(得分:1)

我发布了我的工作设置。您必须检查配置文件中如何使用laravel env辅助函数。此外,当使用smtp.yandex.com时,auth电子邮件和表单电子邮件必须匹配。

Laravel Docs for env()

  

env函数获取环境变量的值或返回默认值:

     

$ env = env(&#39; APP_ENV&#39;);

     

//如果变量不存在,则返回默认值...

     

$ env = env(&#39; APP_ENV&#39;,&#39; production&#39;);

<强> .ENV

MAIL_DRIVER=smtp
MAIL_HOST=smtp.yandex.com
MAIL_PORT=465
MAIL_USERNAME=robot@mydomain.com
MAIL_PASSWORD=123123123
MAIL_ENCRYPTION=ssl
MAIL_FROM=robot@mydomain.com
MAIL_NAME=MY.NAME

<强>配置/ mail.php

<?php
return [
    'driver' => env('MAIL_DRIVER', 'smtp'),
    'host' => env('MAIL_HOST', 'smtp.yandex.com'),
    'port' => env('MAIL_PORT', 465),
    'from' => [
        'address' =>  env('MAIL_FROM','robot@mydomain.com'),
        'name' =>  env('MAIL_NAME','MY.NAME'),
    ],
    'encryption' => env('MAIL_ENCRYPTION', 'ssl'),
    'username' => env('MAIL_USERNAME','robot@mydomain.com'),
    'password' => env('MAIL_PASSWORD','123123123'),
    'sendmail' => '/usr/sbin/sendmail -bs',
    'pretend' => false,
];

控制器功能

public function testmail()
{
    $user =  Auth::user();
    $pathToLogo = config('app.url').'/images/logo/logo_250.png';
    Mail::send('emails.testmail', array('user' => $user, 'pathToLogo' => $pathToLogo), function($message) use ($user)
        {
          $message->to($user->email);
          $message->subject('Test message');
        });
    return redirect()->route('home')->with('message','Test message sent.');
}