[英]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.