繁体   English   中英

在PHP中发送电子邮件与sendmail,sendmail和smtp有什么区别?

[英]What are the differences between sending email in PHP with mail, sendmail, and smtp?

我听说所有这些方法都是用PHP发送电子邮件的有效方法。

它们的优点和缺点是什么?

这三个选项并不完全在同一个联盟中,假设第一个意味着mail()函数。

使用mail()函数通常调用本地邮件注入器,通常是由MTA提供的二进制程序,实际上称为“sendmail”。 mail()的问题在于它是一个非直接的接口,有许多陷阱和陷阱没有很好地记录。 这是因为它模仿(IMO严重)对Unix CLI mail命令的调用。

可以自己调用本地注射器,但记录得更差。 无论如何,你也可以调用mail() ,因为这是后者所做的。

但是,使用SMTP会带来一系列问题。 如果有本地MTA接受和转发邮件,那么这不是一个糟糕的解决方案。 如果没有,您将必须确定应该发送给哪个主机。 这将要么弄清楚哪个外部主机应该进行转发,要么自己进行实际的MX查找。 您还需要知道SMTP协议,并能够出于任何原因处理拒绝。 您必须决定如何处理重新尝试发送的需要。

自己做SMTP也有一个问题,就是不要将电子邮件发送与发送电子邮件的原因分开。 如果出现延迟或问题,您的页面似乎会卡住。 使用本地注入器将前一个问题交给MTA; 你所做的就是将电子邮件排队等待交付。 但是你不必担心像重新发送这样的事情。

这三种解决方案也无法帮助您整理邮件,例如丰富的内容,备用内容和附件。 您必须自己完成所有这些(并添加正确的标题!)。

通常的建议是找到一个能够为您完成所有这些工作的库,它是健壮的并且具有不错的API。 通常的是PHP Mailer 这个库的优点是它还可以完成所有消息组装,以及确定如何进行交付。 但它的主要胜利是它只发送消息,尝试mail()和本地SMTP,甚至是必须的远程SMTP。 一切都是透明的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM