Smtp php是否可以在服务器中未安装邮件服务器的情况下发送电子邮件?

Smtp php是否可以在服务器中未安装邮件服务器的情况下发送电子邮件?,smtp,Smtp,我知道我们可以使用不同主机上的smtp服务器从php发送电子邮件,或者如果安装了本地smtp服务器。我想知道的是,php是否可以在没有任何本地或远程smtp服务器的情况下发送电子邮件?我听说过sendmail程序,但在服务器中没有安装任何邮件服务器的情况下,它能正常工作吗?在某些情况下,您必须与SMTP服务器通话。通过本地主机上的SMTP服务器发送是最干净的选择,也是最有可能成功通过垃圾邮件过滤器的选择 邮件服务器的工作相当复杂。让我们计算一下从电子邮件客户端发送到电子邮件服务器的平均电子邮件,

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

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

邮件服务器的工作相当复杂。让我们计算一下从电子邮件客户端发送到电子邮件服务器的平均电子邮件,其中出站主机作为目标:

  • 服务器将检查您的用户帐户并确保其有效
  • 电子邮件进入一个队列,每个收件人可以单独发送,也可以作为一条消息发送(取决于服务器)
  • 服务器在队列中查找电子邮件并处理每个收件人地址。这需要对每个目标域的MX记录进行DNS查找
  • 电子邮件服务器连接到MX记录指定的地址,并像通过SMTP一样向其发送电子邮件
  • 成功后,将从队列中删除电子邮件。失败时,电子邮件可能会保留在队列中,服务器稍后将重试(指数退避-请参阅greylisting),或者在您稍后通过POP3检查电子邮件时将其放入邮件队列中并返回给您
  • 然后,队列中的下一个电子邮件服务器重复上述操作,直到最后一个服务器收到电子邮件并位于收件人的邮箱中


    在PHP中这样做是可能的,但我不推荐这样做。MX记录查找可能很棘手,因为人们会做各种邮件服务器无法容忍的不合规的事情。另外,您的脚本在尝试直接连接到目标SMTP服务器时可能会超时。某些服务器还配置为“greylist”电子邮件,这意味着该电子邮件最初会被拒绝,但稍后会被接受(例如,30分钟并不罕见)。普通的PHP脚本无法处理这种情况。

    好吧,在某个时候,某个地方,某个地方必须与SMTP服务器进行通信。这就是电子邮件的工作原理。如果SMTP服务器遵循SMTP协议,PHP(以及任何语言)都可以直接与SMTP服务器通信。因为发送电子邮件实际上是一个复杂的话题,所以它很快就会变得一团糟。(我们现在有12个类似ish的RFC,其中有大量过时的RFC,每个RFC平均有50页左右。)这就是为什么人们将电子邮件从PHP发送到可靠的地方,如本地SMTP服务器来处理邮件的原因。”“sendmail”直接将电子邮件放入本地队列进行发送。至于“sendmail”,则将电子邮件放入队列中,供本地框上的SMTP服务器发送。因此,它往往比连接本地SMTP服务器并与之对话更快。因为它是一个*NIX操作系统程序,所以不能保证PHP代码在任何地方都能运行。我倾向于使用可移植的代码,所以我不会把自己束缚在一个单一的系统上。