在Laravel发送电子邮件时出现错误代码“354”

6

你好,我正在制作一个网页应用程序并需要发送一些电子邮件。我使用的是Laravel 5.6,并在本地主机上使用Mailtrap测试电子邮件功能,测试结果良好。但是当我将其放到服务器上时,出现了一个奇怪的错误,如下图所示。

我已经将系统配置为我的主机,Hostinger设置。

这是.env文件中的配置代码:

MAIL_DRIVER=smtp
MAIL_HOST=mx1.hostinger.com.br
MAIL_PORT=587
MAIL_USERNAME=E_MAIL_HERE
MAIL_PASSWORD=PASSWORD_HERE
MAIL_ENCRYPTION=null

enter image description here


1
它提到了收件人:检查消息的实际收件人。 - zerkms
3个回答

7

我也曾经遇到过同样的问题。

基本上,我将config/mail.php中的变量MAIL_FROM_ADDRESS更改为我的实际电子邮件地址,这样就可以正常工作了。

enter image description here


2
我建议您在.env文件中添加MAIL_FROM_ADDRESS="no-reply@test.com"。 - JHOAN B. HENRICHE

5

代码 354 实际上是 Laravel 预期的内容,不是一个错误代码。这是 SMTP 服务器告诉 Laravel 继续发送电子邮件正文的指令。请注意,这是期望的内容,而不是您收到的内容。

来自邮件服务器的代码 554 表示:“事务失败”,您会注意到这正是您实际收到的信息。

进一步的消息中指出了原因:错误:没有有效的收件人。

如果没有更多数据,我无法确定在您的生产服务器上为什么收件人未正确设置。

可以在此处找到更完整的代码列表:https://www.greenend.org.uk/rjk/tech/smtpreplies.html


你在说什么数据?是代码的一部分吗? - Nathan
是的,你的SMTP服务器认为你没有有效的收件人。因此,你需要深入研究你的应用程序,并找出是因为你传递了无效的收件人,还是根本没有将收件人传递给邮件发送器。 - haz
2
问题似乎在于 config/mail.php 文件,我没有改变 FROM_EMAIL 变量,在本地服务器上可以工作。 - Nathan
可能是因为用户会话已经结束,但通知仍在运行。就像我的情况一样,通知尝试在没有任何用户会话的情况下发送,因此返回了554代码。 - Fadli Saad

0
  1. 如果您在控制器或任何地方定义了$message->from('anotheremail@mail.com'),请将其删除并仅将MAIL_FROM_ADDRESS="no-reply@test.com"添加到您的.env中。
  2. 或者您可以在任何定义它的地方添加$message->from('reply@test.com'),例如在您的控制器中。

我相信这是因为您正在尝试放置另一个不属于您的服务器或域的发件人电子邮件地址。请使用您在服务器或Cpanel上创建的电子邮件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接