预计回应代码220但在 Laravel 得到了代码“”和信息“”

我使用 LaravelMail 函数发送电子邮件。以下是我的 app/config/mail.php文件设置。

'driver' => 'sendmail',
'host' => 'smtp.gmail.com',
'port' => 587,
'from' => array('address' => 'email@gmail.com', 'name' => 'MyName'),
'encryption' => 'tls',
'username' => 'myUsername',
'password' => "password",
'sendmail' => '/usr/sbin/sendmail -bs',
'pretend' => false,

控制器邮件方法

//Send Mail
Mail::send('sendMail', array('key' => 'value'), function($message)
{
$message->to('EmailId@hotmail.com', 'Sender Name')->subject('Welcome!');
});

当我运行代码时,它会给我以下错误消息:

Swift _ Transportation 异常

预计响应代码220,但得到代码“ ,与消息”

我已经在视图中创建了一个包含一些数据的 SendMail.php文件。

如何解析此错误消息?

178463 次浏览

这个问题通常可能发生在您不启用 gmail帐户的两步验证(可以执行 给你)时,您正在使用它来发送一个 email。因此,首先,启用 two step verification,您可以找到大量资源来启用两步验证。启用之后,必须创建一个 app password。并在 .env文件中使用 app password。当您使用完它,您的 .env文件将看起来像。

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

还有你的 mail.php

<?php


return [
'driver' => env('MAIL_DRIVER', 'smtp'),
'host' => env('MAIL_HOST', 'smtp.gmail.com'),
'port' => env('MAIL_PORT', 587),
'from' => ['address' => '<<your email>>', 'name' => '<<any name>>'],
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
'sendmail' => '/usr/sbin/sendmail -bs',
'pretend' => false,


];

这样做之后,运行 php artisan config:cachephp artisan config:clear,然后检查,电子邮件应该工作。

在我的情况下,我必须设置

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=465           <<<<<<<------------------------- (FOCUS THIS)
MAIL_USERNAME=<<your email address>>
MAIL_PASSWORD=<<app password>>


MAIL_ENCRYPTION= ssl    <<<<<<<------------------------- (FOCUS THIS)

可能会有用。 其余的代码与“ Sid”说的一样。

我认为编辑环境文件和 app/config/mail.php 是不必要的,只需要使用一种方法。

根据@Zan 的评论进行编辑

如果需要启用 这个保护,请使用以下设置。

MAIL_PORT=587
MAIL_ENCRYPTION= tls

有关其他 gmail 设置,请参阅 给你

帮助我的是... 把 sendmail 参数从 -bs 改为 -t。

'sendmail' => '/your/sendmail/path -t',

对我来说,问题在于港口。我首先错误地使用了端口465,它适用于 SSL,但不适用于 TLS。所以关键是把端口改成587。

如果你正在使用 Swift Mailer: 请确保 $Transport 变量与下面的类似, 根据我所做的测试,这个错误是由于 ssl 和端口错误配置造成的。 注意: 必须在传输变量中包含‘ ssl’或‘ tls’。

示例代码:

// Create the Transport
$transport = (new Swift_SmtpTransport('smtp.gmail.com', 465, 'ssl'))
->setUsername(you@example.com)
->setPassword(password)
;


// Create the Mailer using your created Transport
$mailer = new Swift_Mailer($transport);


// Create a message
$message = (new Swift_Message('News Letter Subscription'))
->setFrom(['app@example.com' => 'A Name'])
->setTo(['someone@example.com' => 'A Name'])
->setBody('your message body')
;


// Send the message
$result = $mailer->send($message);

我也面临着同样的问题,在 Google 和 StackOverflow 上搜索了很多,我发现了一个非常简单的解决方案

首先,您需要像这样设置环境

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=example@gmail.com
MAIL_PASSWORD=example44
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=example@gmail.com

你必须改变你的 Gmail 地址和密码

现在你不得不在不太安全的应用程序,按照这个链接 https://myaccount.google.com/lesssecureapps