预期响应代码 220,但收到代码 “”,在 Laravel 中带有消息 “”

2022-08-30 08:29:10

我正在使用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

预期响应代码 220,但收到代码 “”,带有消息 “”

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

如何解决此错误消息?


答案 1

当您不为用于发送 .因此,首先,启用 ,您可以找到大量用于启用两步验证的资源。启用它后,您必须创建一个.并在您的文件中使用 。完成此操作后,您的文件将如下所示。gmailemailtwo step verificationapp passwordapp password.env.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


答案 2

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

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说的相同。

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

根据@Zan的评论进行编辑

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

MAIL_PORT=587
MAIL_ENCRYPTION= tls  

有关其他一些 gmail 设置,请参阅此处


推荐