我尝试使用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设置完成吗?
答案 0 :(得分:1)
我发布了我的工作设置。您必须检查配置文件中如何使用laravel env
辅助函数。此外,当使用smtp.yandex.com时,auth电子邮件和表单电子邮件必须匹配。
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.');
}