Php 预期响应代码为220,但得到代码“&引用;,带“信息”&引用;在拉维尔
我正在使用Laravel邮件功能发送电子邮件。下面是我的Php 预期响应代码为220,但得到代码“&引用;,带“信息”&引用;在拉维尔,php,email,laravel,swiftmailer,Php,Email,Laravel,Swiftmailer,我正在使用Laravel邮件功能发送电子邮件。下面是我的app/config/mail.php文件设置 'driver' => 'sendmail', 'host' => 'smtp.gmail.com', 'port' => 587, 'from' => array('address' => 'email@gmail.com', 'name' => 'MyName'), 'encryption' => 'tls', 'username' => '
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,
MAIL_PORT=587
MAIL_ENCRYPTION= tls
控制器邮件方法
//Send Mail
Mail::send('sendMail', array('key' => 'value'), function($message)
{
$message->to('EmailId@hotmail.com', 'Sender Name')->subject('Welcome!');
});
当我运行代码时,它会显示以下错误消息:
Swift_运输例外
预期响应代码为220,但获得代码“”,消息为“”
我在视图中创建了一个SendMail.php
文件,其中包含一些数据
如何解决此错误消息?当您不为用于发送
电子邮件的gmail
帐户启用两步验证(可以完成)时,通常会出现此问题。因此,首先,启用两步验证
,您可以找到大量资源来启用两步验证。启用后,您必须创建一个应用程序密码
。并使用.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
执行此操作后,运行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)
有关其他gmail设置的信息,请参见。。。将sendmail参数从-bs更改为-t
'sendmail' => '/your/sendmail/path -t',
我按照sid做了,更新后我的环境是
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=<mygmailaddress>
MAIL_PASSWORD=<gmailpassword>
MAIL_ENCRYPTION=tls
MAIL\u驱动程序=smtp
MAIL_HOST=smtp.gmail.com
邮件端口=587
邮箱用户名=
邮箱密码=
邮件加密=tls
这在没有两步验证的情况下确实有效。启用两步验证后,它对我不起作用。对我来说,问题在于端口。我首先错误地使用了端口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);
该错误消息表示没有响应或服务器无法连接
以下设置在我的端起作用:
'stream' => [
'ssl' => [
'allow_self_signed' => true,
'verify_peer' => false,
'verify_peer_name' => false,
],
]
请注意,我的SMTP设置是:
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=465
MAIL_USERNAME=[full gmail address]
MAIL_PASSWORD=[App Password obtained after two step verification]
MAIL_ENCRYPTION=ssl
我也面临同样的问题。在对谷歌和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地址和密码
现在,您必须通过以下链接访问不太安全的应用程序我遇到了这个问题,我检查了所有答案,但没有任何结果,但是我重置了mail.php,没有触摸它,并从.env文件设置了邮件服务器,它工作得非常好,希望这能为某人节省时间:)。您是否为您使用的gmail帐户启用了两步验证?对于任何使用SELinux的人:检查SELinux audit…我到处都找了,找不到解决方案,但您完全救了我的命!!。非常感谢!!。我投票支持你的答案!美好的它正在工作。我认为这是这个错误的正确答案。我对Yii2和mailer也有同样的问题。对我来说,关键是用电话号码为gmail账户背书。我没有做这里建议的所有事情,只是遵循了mailer类实现的yii2文档和电话号码链接。stream\u socket\u enable\u crypto():SSL操作失败,代码为1。OpenSSL错误消息:\n错误:14090086:SSL例程:ssl3\u获取\u服务器\u证书:证书验证失败谢谢!我认为只允许不太安全的应用程序访问将使它工作,但只是浪费我的时间!SSL现在被认为是不安全的:最好遵循“tls”的答案。@JanŻankowski True。我编辑了答案。您还可以找到其他设置谢谢,这很有效!您是如何想到这个主意的?您需要提供更多信息,说明我们应该在Swiftmail文档中的何处添加或更改此内容:您可以在命令行标志指定的两种不同模式下运行Sendmail传输:“-bs”在SMTP模式下运行,因此理论上它将与SMTP传输类似。“-t”在管道模式下运行,无反馈,但理论上更快,但不建议。您可以将Sendmail传输视为一种异步SMTP传输——不过,如果您遇到传递失败的问题,您应该尝试改用SMTP传输。Swift Mailer在这里不做这项工作,它只是将工作传递给其他人(即sendmail)。如果使用“sendmail-t”,在失败反弹之前,您不会意识到任何失败(即send()将始终返回100%成功)。
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