php可以在服务器中没有安装邮件服务器的情

时间:2013-01-08 05:37:04

标签: smtp

我知道我们可以使用不同主机上的smtp服务器从php发送电子邮件,或者是否安装了本地smtp服务器。我想知道的是,php可以在没有任何本地或远程smtp服务器的情况下发送电子邮件吗?我听说过sendmail程序,但它可以在服务器上没有安装任何邮件服务器的情况下运行吗?

1 个答案:

答案 0 :(得分:2)

在某些时候,您必须与SMTP服务器通信。通过本地主机上的SMTP服务器发送是最干净的选择,最有可能成功通过垃圾邮件过滤器。

邮件服务器的功能非常复杂。让我们从您的电子邮件客户端到您的电子邮件服务器,以出站主机作为目的地,收取您的平均电子邮件:

  1. 服务器会检查您的用户帐户并确保其有效。
  2. 电子邮件分别为每个收件人或作为一条消息(取决于服务器)进入队列。
  3. 服务器在队列中查找电子邮件并处理每个收件人地址。这需要对每个目标域的MX记录进行DNS查找。
  4. 电子邮件服务器连接到MX记录指定的地址,并像通过SMTP一样将电子邮件发送给它。
  5. 成功后,电子邮件将从队列中删除。如果失败,电子邮件可能会保留在队列中,服务器将稍后再次尝试(指数退避 - 请参阅灰名单),或者在您稍后通过POP3检查电子邮件时将其放入邮件队列中以便返回给您。 / LI>

    队列中的下一个电子邮件服务器会重复上述操作,直到最终服务器收到电子邮件并位于收件人的邮箱中。

    可以在PHP中执行此操作,但我不建议这样做。 MX记录查找可能很棘手,因为人们会做各种邮件服务器容忍的不合规事情。此外,尝试直接连接到目标SMTP服务器时,您的脚本可能会超时。某些服务器也配置为“灰名单”电子邮件,这意味着电子邮件最初将被拒绝但稍后会被接受(例如30分钟并不罕见)。平均PHP脚本将无法处理该场景。