【问题标题】:Unable to get emails sent by PHP mail function because of another mail server由于另一个邮件服务器,无法获取 PHP 邮件功能发送的电子邮件
【发布时间】:2013-07-14 16:57:25
【问题描述】:

我在 Linux 网络托管包上使用 PHP 创建了一个网站。通常我会收到由 PHP Mail() 函数生成的联系表发送的电子邮件。但这一次,对我来说是一个奇怪的案例。
我的客户公司有一个邮件服务器。如果我通过 Gmail 上的个人电子邮件发送电子邮件,他们会在他们的邮件服务器上收到它。但是当我通过联系表格发送电子邮件时,电子邮件会转到网站托管包上的网络邮件。
我已经删除了这台主机上的所有电子邮件帐户,也从中删除了 DNS MX 记录,但我仍然无法在公司邮件服务器帐户上接收通过联系表格发送的电子邮件。

我该如何解决这个问题?

【问题讨论】:

  • Web 服务器运行的是 UNIX 还是 Windows? PHP 是否配置了 sendmail 或 SMTP 服务器?
  • 它在 Unix 上运行,正如我所说,联系表单使用 PHP Mail() 函数发送电子邮件。

标签: php email mail-server webmail


【解决方案1】:

首先要确定的是您发送电子邮件的方式(sendmail 或 SMTP)。然后,您的电子邮件是 a) 根本没有发送还是 b) 被目标邮件服务器拒绝。

我会检查所有可用的日志(源和目标邮件服务器和守护程序)。查看 mail() 本身是否出错。尝试直接使用 sendmail/smtp。

如果目标服务器根据垃圾邮件分数拒绝邮件,请尝试设置 SPF records 以使 Web 服务器能够合法发送邮件。

【讨论】:

    【解决方案2】:

    从您的问题看来,网络拍摄提供商也是您的电子邮件托管服务提供商。您解释问题的方式使我得出结论,您的 PHP 脚本使用 mail() 函数,该函数将在内部调用 MTA(如 sendmail)来发送电子邮件。

    现在这里似乎发生的是 PHP 正在通过 mail() 函数发送邮件,该函数将邮件传递给正在检查本地配置的本地 MTA(如 sendmail)。在本地配置中,它似乎将收件人域作为本地域并将邮件本地传递给用户。在这种情况下,电子邮件甚至不会离开虚拟主机的服务器。

    由于这不是您所期望的,如果您对 MTA 的配置没有影响(我认为您没有),您有两种可能性。

    1. 我建议(如果可能的话)不要使用 mail() 函数。已经准备好使用 SMTP 类,它们将连接到您的合作伙伴的 SMTP 服务器以发送电子邮件。这样你就可以避免这个问题。你应该在PHP Classes Repository 中找到一些东西。

    2. 如果可能,请将电子邮件发送到其他域。这样,MTA 必须检查 DNS 并将电子邮件发送到另一个 SMTP 服务器进行传递。

    【讨论】:

      【解决方案3】:


      如果您的电子邮件功能“mail($to,$subject,$message)”不起作用,那么您需要检查服务器配置。现在它是否启用。 更多详情,
      请看这里:https://wycks.wordpress.com/2013/10/09/when-phps-mail-function-doesnt-work/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-05-23
        • 2015-09-05
        • 2012-02-04
        • 1970-01-01
        • 2011-08-19
        • 1970-01-01
        • 1970-01-01
        • 2012-12-12
        相关资源
        最近更新 更多