预期响应代码为220,但在Laravel中得到代码“",消息为“”

nafvub8i  于 2023-04-22  发布在  其他
关注(0)|答案(7)|浏览(135)

我正在使用Laravel Mail功能发送电子邮件。以下是我的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文件。
如何解决此错误消息?

qmelpv7a

qmelpv7a1#

当您没有为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:cachephp artisan config:clear,然后检查,电子邮件应该可以工作。

n3schb8v

n3schb8v2#

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

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设置

jhdbpxl9

jhdbpxl93#

什么帮助了我...将sendmail参数从-bs改为-t。

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

krcsximq4#

如果你使用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);
tsm1rwdh

tsm1rwdh5#

我也面临着同样的问题。在研究了谷歌和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来访问不太安全的应用程序

n7taea2i

n7taea2i6#

对我来说,问题是端口。我首先错误地使用了端口465,它适用于SSL,但不适用于TLS。所以关键的事情是将端口更改为587。

2lpgd968

2lpgd9687#

它通过激活我的Google帐户的不太安全的应用程序访问设置和以下环境变量设置对我起作用:

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

相关问题