错误:消息未发送。服务器回复:354

use*_*058 5 smtp sendmail

在 webmail 上,每个用户在发送邮件时都会收到错误“错误:消息未发送。服务器回复:354”。

但是邮件被正确发送并正确到达。

你能告诉我问题出在哪里,为什么会发生?

更新:我在一些资源中发现这不是错误而是标准信息消息。另一方面,它很烦人。你能告诉我它是否是真的,如果是我如何避免它?

Jen*_*y D 14

特尔;博士:

您的网络邮件程序编写得很糟糕,并认为响应代码 354 是一个错误,即使它不是。

长答案:

这就是 SMTP 会话的样子(S = 服务器,C = 客户端)

  S: 220 foo.com Simple Mail Transfer Service Ready
  C: EHLO bar.com
  S: 250-foo.com greets bar.com
  S: 250-8BITMIME
  S: 250-SIZE
  S: 250-DSN
  S: 250 HELP
  C: MAIL FROM:<Smith@bar.com>
  S: 250 OK
  C: RCPT TO:<Jones@foo.com>
  S: 250 OK
  C: DATA
  S: 354 Start mail input; end with <CRLF>.<CRLF>
  C: Blah blah blah...
  C: ...etc. etc. etc.
  C: .
  S: 250 OK
  C: QUIT
  S: 221 foo.com Service closing transmission channel
Run Code Online (Sandbox Code Playgroud)

如您所见,代码 354 的意思是“好的,我们已经完成了有关发件人和收件人的信息,现在给我实际邮件”。但是,您的网络邮件系统已被编码为认为只有以 2 开头的响应代码表示“成功”,因此需要任何其他代码来表示存在问题。编写webmail程序的人需要回去重新阅读RFC 5321,然后修复错误。