预期响应代码 220 但在 Laravel 中得到代码“”和消息“”
Expected response code 220 but got code "", with message "" in Laravel
我正在使用 Laravel 邮件功能发送电子邮件。以下是我的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_TransportException
Expected response code 220 but got code "", with message ""
我在视图中创建了一个 SendMail.php
文件,其中包含一些数据。
如何解决此错误消息?
当您没有为用于发送 email
的 gmail
帐户(可以完成 here)启用两步验证时,通常会出现此问题。因此,首先,启用 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:cache
和 php 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的评论编辑
如果您需要启用 tls 保护,请使用以下设置。
MAIL_PORT=587
MAIL_ENCRYPTION= tls
有关其他一些 gmail 设置,请参阅 here
是什么帮助了我...将 sendmail 参数从 -bs 更改为 -t。
'sendmail' => '/your/sendmail/path -t',
对我来说问题是端口。我首先错误地使用了端口 465,它适用于 SSL
但不适用于 TLS
。所以关键是将端口更改为 587。
如果您使用的是 Swift 邮件程序:
请确保您的 $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 和 Whosebug 进行了过多研究之后。我找到了一个非常简单的解决方案
首先,你需要这样设置环境
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 地址和密码
现在您必须按照此 link https://myaccount.google.com/lesssecureapps
来使用不太安全的应用程序
我正在使用 Laravel 邮件功能发送电子邮件。以下是我的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_TransportException
Expected response code 220 but got code "", with message ""
我在视图中创建了一个 SendMail.php
文件,其中包含一些数据。
如何解决此错误消息?
当您没有为用于发送 email
的 gmail
帐户(可以完成 here)启用两步验证时,通常会出现此问题。因此,首先,启用 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:cache
和 php 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的评论编辑
如果您需要启用 tls 保护,请使用以下设置。
MAIL_PORT=587
MAIL_ENCRYPTION= tls
有关其他一些 gmail 设置,请参阅 here
是什么帮助了我...将 sendmail 参数从 -bs 更改为 -t。
'sendmail' => '/your/sendmail/path -t',
对我来说问题是端口。我首先错误地使用了端口 465,它适用于 SSL
但不适用于 TLS
。所以关键是将端口更改为 587。
如果您使用的是 Swift 邮件程序: 请确保您的 $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 和 Whosebug 进行了过多研究之后。我找到了一个非常简单的解决方案
首先,你需要这样设置环境
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 地址和密码
现在您必须按照此 link https://myaccount.google.com/lesssecureapps
来使用不太安全的应用程序