预期的响应代码220,但在本地环境中在Laravel 5.4中发送邮件时获得代码“500”

问题描述:

我正在将Laravel 5.0应用程序迁移到5.4,并试图在本地环境中测试邮件。我一直使用Anitix SMTP Imposter。下面是我的邮件配置看起来像我的.ENV:预期的响应代码220,但在本地环境中在Laravel 5.4中发送邮件时获得代码“500”

MAIL_DRIVER=smtp 
MAIL_HOST=127.0.0.1 
MAIL_PORT=25 
MAIL_USERNAME=null 
MAIL_PASSWORD=null 
MAIL_ENCRYPT=null 

这在Laravel(4,4.2,5.0)的所有先前版本总是工作,但突然有5.4,我发现了以下错误:

Swift_TransportException in AbstractSmtpTransport.php line 383: Expected response code 220 but got code "500", with message "500 Command not recognized "

我已经试过禁用停住,使用替代程序,如Papercut,通过使用SSL或TLS与配置玩,但我想不出是什么导致这一点。有任何想法吗?

首先尝试:php artisan config:cache并重新启动本地服务器,也许Laravel使用旧的邮件数据。

用于开发目的https://mailtrap.io/为您提供需要添加到.env文件中的所有设置。例如:

Host: mailtrap.io 
Port: 25 or 465 or 2525 
Username: cb1d1475bc6cce 
Password: 7a330479c15f99 
Auth: PLAIN, LOGIN and CRAM-MD5 
TLS: Optional 

否则,即可获得在.ENV文件中添加的SMTP凭证从邮件(如Gmail n的所有)

添加后实施的目的一定要重新启动服务器

+0

谢谢,config:cache命令没有改变任何东西。我使用mailtrap.io进行设置,并且它可以这样工作,但我仍然想知道为什么它不像我以前的Laravel版本中那样使用本地应用程序。 – Chris

您可以使用https://mailtrap.io/ 它将为您提供所有必要的详细信息,以便您检查本地计算机中的邮件功能,包括用户名,密码,端口,主机等。

如果仍然有同样的问题的问题,在 文件config/mail.php在您的项目,而不是使用.ENV文件中使用这些细节。

return array(
     "driver" => "smtp", 
     "host" => "mailtrap.io", 
     "port" => 2525, 
     "username" => "mailtrap.io_your_username", 
     "password" => "mailtrap.io_your_password", 
     "sendmail" => "/usr/sbin/sendmail -bs", 
     "pretend" => false 
);