【发布时间】:2011-03-07 11:52:56
【问题描述】:
我需要使用 PHP 向数千名订阅者发送时事通讯。 我使用的托管服务允许我使用他们的 SMTP 服务器每小时发送 300 封邮件。
他们告诉我,如果我使用 PHP 发送电子邮件而不进行身份验证或使用 SMTP 服务器,我不会遇到任何限制问题。
这可能吗? PHP中的mail()函数不是使用SMTP发送邮件吗?
【问题讨论】:
我需要使用 PHP 向数千名订阅者发送时事通讯。 我使用的托管服务允许我使用他们的 SMTP 服务器每小时发送 300 封邮件。
他们告诉我,如果我使用 PHP 发送电子邮件而不进行身份验证或使用 SMTP 服务器,我不会遇到任何限制问题。
这可能吗? PHP中的mail()函数不是使用SMTP发送邮件吗?
【问题讨论】:
在 unix/linux 上,mail() 几乎总是被配置为只使用本地 sendmail 工具。
从技术上讲,您仍在使用 SMTP 服务器,但不在您的 ISP 上。 Sendmail 直接与负责接收每个收件人的邮件的 SMTP 服务器通信。
虽然您的主机可能有 sendmail 来通过其 SMTP 服务器路由所有邮件,但这不太可能。
我会说只是使用普通的旧 mail() 并试一试。
【讨论】:
mail() 的问题在于它的效率不是很高(请参阅mail() 上的手册页),您可能需要实现某种队列以避免数千个收件人的过载。但是 - 试一试并尝试一下。只要您跟踪哪些操作返回了true(以避免重复),您应该没问题。
托管公司可能会为您提供可以使用的 SMTP 服务器,而该服务器可能存在限制。您可以通过使用另一个 SMTP 服务器(他们没有提供的服务器)来避免限制。
传统上,所有电子邮件都是使用 SMTP“发送”的。您需要将您的机器配置为使用外部服务器。
【讨论】:
mail() 函数将使用 php.ini 告诉它使用的任何内容,可能是 sendmail 或可能是外部 SMTP 服务器。
您有几个不同的选择:
我的 0.02
【讨论】:
有关从代码成功发送电子邮件的一般性讨论,请参阅this Coding Horror post。我注意到其中一个 cmets 提到 Postmark app 作为使用 ISP 的 SMTP 服务器的付费替代方案。没用过,不知道值不值。
【讨论】: