gpt4 book ai didi

php - 用 mail、sendmail 和 smtp 在 PHP 中发送电子邮件有什么区别?

转载 作者:可可西里 更新时间:2023-10-31 23:10:11 25 4
gpt4 key购买 nike

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

它们的优缺点是什么?

最佳答案

这三个选项并不完全相同,假定第一个表示 mail() 函数。

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

您可以自己调用本地注入(inject)器,但这一点记录得更不充分。无论如何,您也可以调用 mail(),因为后者就是这样做的。

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

自己执行 SMTP 也存在无法将电子邮件发送与发送电子邮件的原因分离的问题。如果出现延迟或问题,您的页面将看起来卡住了。使用本地注入(inject)器将之前的问题交给了 MTA;您所做的只是将电子邮件排队等待发送。但这样一来,您就不必担心重新发送之类的事情了。

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

通常的建议是找到一个可以为您完成所有这些工作、功能强大且具有良好 API 的库。常用的是 PHP Mailer。这个库的优点是它还进行所有的消息组装,以及弄清楚如何进行传递。但它的主要优势在于它只是发送消息,尝试 mail() 和本地 SMTP,如果必须的话,甚至远程 SMTP。一切都是透明的。

关于php - 用 mail、sendmail 和 smtp 在 PHP 中发送电子邮件有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9508730/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com