我听说所有这些方法都是在PHP中发送电子邮件的有效方法。
它们的优点和缺点是什么?
发布于 2012-03-01 09:38:57
这三个选项并不完全相同,假设第一个选项意味着mail()函数。
使用mail()函数通常调用本地邮件注入器,通常是由MTA提供的二进制程序,实际上称为"sendmail“。mail()的问题是,它是一个非直接的接口,有许多陷阱和陷阱,没有很好的文档记录。这是因为它模仿(在我看来很糟糕)对Unix CLI mail命令的调用。
您可以自己调用本地注入器,但这方面的文档甚至更少。无论如何,您也可以调用mail(),因为后者就是这样做的。
然而,使用SMTP也有其自身的一系列问题。如果有一个接受和转发邮件的本地MTA,那么这是一个不错的解决方案。如果没有,你将不得不找出你应该发送到哪台主机。这要么是找出应该由哪台外部主机进行转发,要么是自己进行实际的MX查找。您还需要了解SMTP协议,并能够处理任何原因的拒绝。并且您必须决定如何处理重试发送的需要。
自己做SMTP也有一个问题,那就是没有将发送电子邮件的原因与发送电子邮件的原因分离开来。如果出现延迟或问题,您的页面将显示为卡住。使用本地注入器将前面的问题交给MTA;您所做的只是将电子邮件排队等待发送。但这样你就不必担心重发之类的事情了。
这三种解决方案也不能帮助您组装邮件,例如丰富内容、备用内容和附件。您必须完成所有这些操作(并添加正确的标头!)你自己。
通常的建议是找到一个库,它可以为您完成所有这些工作,是健壮的,并且有一个像样的API。通常使用的是PHP Mailer。这个库的优点是,它还可以完成所有的消息组装,以及确定如何进行传递。但它的主要优势是,它只发送消息,尝试mail()和本地SMTP,甚至远程SMTP,如果需要的话。这一切都是透明的。
https://stackoverflow.com/questions/9508730
复制相似问题