【问题标题】:Is it possible to send an email from PHP without using the SMTP server是否可以在不使用 SMTP 服务器的情况下从 PHP 发送电子邮件
【发布时间】:2011-03-07 11:52:56
【问题描述】:

我需要使用 PHP 向数千名订阅者发送时事通讯。 我使用的托管服务允许我使用他们的 SMTP 服务器每小时发送 300 封邮件。

他们告诉我,如果我使用 PHP 发送电子邮件而不进行身份验证或使用 SMTP 服务器,我不会遇到任何限制问题。

这可能吗? PHP中的mail()函数不是使用SMTP发送邮件吗?

【问题讨论】:

    标签: php smtp email


    【解决方案1】:

    在 unix/linux 上,mail() 几乎总是被配置为只使用本地 sendmail 工具。

    从技术上讲,您仍在使用 SMTP 服务器,但不在您的 ISP 上。 Sendmail 直接与负责接收每个收件人的邮件的 SMTP 服务器通信。

    虽然您的主机可能有 sendmail 来通过其 SMTP 服务器路由所有邮件,但这不太可能。

    我会说只是使用普通的旧 mail() 并试一试。

    【讨论】:

    • mail() 的问题在于它的效率不是很高(请参阅mail() 上的手册页),您可能需要实现某种队列以避免数千个收件人的过载。但是 - 试一试并尝试一下。只要您跟踪哪些操作返回了true(以避免重复),您应该没问题。
    【解决方案2】:

    托管公司可能会为您提供可以使用的 SMTP 服务器,而该服务器可能存在限制。您可以通过使用另一个 SMTP 服务器(他们没有提供的服务器)来避免限制。

    传统上,所有电子邮件都是使用 SMTP“发送”的。您需要将您的机器配置为使用外部服务器。

    http://email.about.com/od/emailprogrammingtips/qt/Configure_PHP_to_Use_a_Remote_SMTP_Server_for_Sending_Mail.htm

    【讨论】:

    • 请注意这一点:许多垃圾邮件过滤器会检查原始 SMTP 服务器是否也处理发件人地址域的传入邮件。您的发件人地址应始终与您发送邮件的服务器上的域相匹配。
    【解决方案3】:

    mail() 函数将使用 php.ini 告诉它使用的任何内容,可能是 sendmail 或可能是外部 SMTP 服务器。

    您有几个不同的选择:

    • 如果他们对时间不敏感,请使用他们的 SMTP 服务器并自行限制;
    • 或者,如果它们对时间敏感,则对您自己的外部 SMTP 服务器进行身份验证可能是有意义的;
    • 最后,我建议查看 MailChimp 或 iContact 之类的系统。他们会让你发送给你名单上的任何人,并会为你处理退回和退订。更好的是,他们的服务器已被 ISP 等列入白名单,因此您不太可能将您的邮件标记为垃圾邮件。

    我的 0.02

    【讨论】:

      【解决方案4】:

      有关从代码成功发送电子邮件的一般性讨论,请参阅this Coding Horror post。我注意到其中一个 cmets 提到 Postmark app 作为使用 ISP 的 SMTP 服务器的付费替代方案。没用过,不知道值不值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-06-25
        • 2021-10-01
        • 2012-09-11
        • 1970-01-01
        • 2013-12-08
        相关资源
        最近更新 更多