【问题标题】:Sending SMTP messages using PHPMailer, response of 'MAIL not accepted from server', why?使用 PHPMailer 发送 SMTP 消息,“邮件未从服务器接受”的响应,为什么?
【发布时间】:2015-03-10 13:00:09
【问题描述】:

我一直在努力解决这个问题......任何线索将不胜感激。

我在运行 exim 的 Ubuntu 12.04 服务器上通过 PHPMailers SMTP 类本地发送邮件。如果我只发送 10 条消息,一切正常。但是,如果我排队说 260 多条消息并尝试一个接一个地发送它们,我可以保证其中约 30 条消息将与该行一起返回:

MAIL not accepted from server

他们都去同一个地址(其他 230 个成功地到达那里),我有时可以看到 exim 中的队列正在运行,那么可能是什么原因造成的,如果发生这种错误,为什么不会发生这种错误我只是在使用“邮件”命令?

提前致谢。

P.S:我没有使用 mail 命令,因为我实际上是从 SMTP 输出中提取消息 ID

更新

我在 PHPMailers class.smtp.php 文件中进行了更多挖掘,并在 Mail 函数中添加了一个或两个 var_dump,我还将调试级别提高到 4(以便我看到每个 SMTP 响应)。似乎$this->getLines() 函数正在从套接字读取一个空白行...... class.smtp.php 正在解释(可能是错误的)然后退出。这是一个有效的回应吗?为什么 telnet 什么都不返回..?

【问题讨论】:

  • 您是否尝试在邮件之间设置sleep(1); 延迟?您在一定时间内可以发送的邮件数量可能存在限制。
  • 我确实做到了,在每条消息之后。事实上,如果我收到消息,我也会在其中添加一个额外的 sleep(1) 命令:(
  • 听起来您需要检查邮件服务器日志中写入的内容。

标签: php email ubuntu smtp phpmailer


【解决方案1】:
  1. 你试过把 sleep(1);邮件之间的延迟?您在一定时间内可以发送的邮件数量可能会有限制。

  2. 检查该错误发生的时间,脚本运行了多长时间?邮件服务器登录时间似乎已过期。将电子邮件除以较小的数量,并在发送大约 20 封电子邮件后重新登录。

【讨论】:

  • 感谢 Dainis,每条消息发送后都有一个 sleep(1)。此外,我每次都在反序列化邮件对象然后发送,所以它不应该是一个持续的连接问题......
【解决方案2】:

您收到的错误信息应该比这更丰富,例如

ERROR: MAIL not accepted from server: 550 Tarpit active for...

或类似的东西。消息的第二部分应该告诉您错误是什么。否则,您应该能够在邮件日志消息中看到原因 - /var/log/messages、/var/log/mail* 等。

更新:这就是我这么说的原因:

if($code != 250) {
  $this->error =
    array("error" => "MAIL not accepted from server",
          "smtp_code" => $code,
          "smtp_msg" => substr($rply,4));
  if($this->do_debug >= 1) {
    echo "SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '<br />';
  }
  return false;
}

...所以错误应该还包括 SMTP 代码和/或消息,而不仅仅是“不接受来自服务器的邮件”。

无论如何,错误的原因应该已经被服务器记录了,并且可以在 /var/log/exim4/rejectlog 或 /var/log/exim4/mainlog 等中找到。

【讨论】:

  • 嗨 isemi,事实证明“不接受邮件”是 class.smtp.php 中的硬编码字符串,我已经用我目前的发现更新了我的问题。谢谢
【解决方案3】:

1 天前我在使用 PHPMailer 类时遇到了同样的问题,我收到了错误消息:MAIL not accepted from server:,没有进一步的错误细节。我有一个简单的解决方案,我先做SetFrom("my@email.com", "My Name"),然后再做Send(),它是有效的。我猜这是关于 SMTP 服务器,它需要一个“FROM”标头才能通过 SMTP 服务器发送。我希望它对可能来到这个帖子并和我有同样问题的人有用。

【讨论】:

    猜你喜欢
    • 2016-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-11
    • 2018-09-10
    • 2015-06-22
    相关资源
    最近更新 更多