我知道我们可以使用不同主机上的 smtp 服务器从 php 发送电子邮件,或者如果安装了本地 smtp 服务器。我想知道的是php可以在没有任何本地或远程smtp服务器的情况下发送电子邮件吗?我听说过 sendmail 程序,但它可以在服务器中不安装任何邮件服务器的情况下运行吗?
问问题
2938 次
1 回答
2
在某些时候,您必须与 SMTP 服务器通信。通过本地主机上的 SMTP 服务器发送是最干净的选项,并且最有可能成功通过垃圾邮件过滤器。
邮件服务器的作用相当复杂。让我们将您的平均电子邮件从您的电子邮件客户端到达您的电子邮件服务器,并将出站主机作为目的地:
- 服务器会检查您的用户帐户并确保其有效。
- 电子邮件或单独为每个收件人或作为一条消息进入队列(取决于服务器)。
- 服务器在队列中找到电子邮件并处理每个收件人地址。这需要 DNS 查找每个目标域的 MX 记录。
- 电子邮件服务器连接到 MX 记录指定的地址,并将电子邮件传递给它,就像通过 SMTP 一样。
- 成功后,电子邮件将从队列中删除。失败时,电子邮件可能会保留在队列中,服务器将稍后重试(指数退避 - 参见灰名单)或放入邮件队列中,以便稍后在您通过 POP3 检查电子邮件时返回给您。
队列中的下一个电子邮件服务器然后重复上述操作,直到最后一个服务器接收到电子邮件并进入收件人的邮箱。
在 PHP 中这样做是可能的,但我不建议这样做。MX 记录查找可能很棘手,因为人们会做各种邮件服务器可以容忍的不合规的事情。此外,您的脚本在尝试直接连接到目标 SMTP 服务器时可能会超时。一些服务器还配置了“灰名单”电子邮件,这意味着电子邮件最初会被拒绝,但稍后会被接受(例如 30 分钟并不罕见)。一般的 PHP 脚本将无法处理这种情况。
于 2013-01-08T14:44:33.927 回答