【问题标题】:PHP mail() - Exchange 2003 doesn't receive emailPHP mail() - Exchange 2003 不接收电子邮件
【发布时间】:2015-07-27 09:31:20
【问题描述】:

我有一个 PHP mail() 脚本,它发送包含嵌入图像的 HTML 电子邮件。

代码基本上是这样的:

mail($to, $subject, $message, $headers);

标题是这样的:

MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="--a9cf4407bac7d49ebd2d94af284cb0d8"
From: Myname <name@domain.co.uk>
Reply-To: name@domain.co.uk

电子邮件可以正常发送到所有 outlook.com 和 gmail.com 地址。我已经测试过,但是当发送到我们运行 Microsoft Exchange 2003 的办公室时,电子邮件无法发送。它甚至没有到达令我困惑的原木。 Exchange 没有阻止电子邮件,甚至没有收到它。

是否存在已知的 PHP/Exchange 2003 冲突?还是其他地方的问题?

如果需要,我很乐意提供更多代码。

【问题讨论】:

  • 您好,可能有很多原因,您办公室邮件服务器上的 POP3/IMAP 端口是否关闭。请先检查一下。
  • 嗨,Sourabh!我已经检查过了,那个端口是开放的。这很令人困惑 - 我不是 Exchange 专家 :(
  • 嗨,正如您在问题中所说,您的邮件接收服务器中没有记录日志,那么这意味着邮件甚至没有到达您的邮件服务器。使用此链接扫描 POP3/IMAP 的开放端口。看看它是否显示显示打开。您是否收到来自其他服务(如 gmail 等)的邮件
  • 如果我使用 PHP 脚本发送到 Outlook.com 帐户,然后手动转发电子邮件以交换电子邮件通过
  • 您的上一条评论中是否应该有一个链接?我看不到它

标签: php email exchange-server


【解决方案1】:

您似乎正在使用 php 的本机邮件功能。配置和故障排除通常很麻烦。

您可以通过查看 PHPMailer 或 Swift Mailer 为自己节省大量时间。这些库会不断维护和修复,以保持与 Exchange 和其他系统的兼容性。

此外,通过 Exchange,您可以更轻松地在其上设置电子邮件帐户并让您的应用程序使用它。

【讨论】:

    【解决方案2】:

    几年前我有同样的症状,如果你的问题和我的一样,你会惊讶地发现它与你的代码无关。

    在我的例子中,我从一个内部托管的 Web 服务器发送邮件到一个内部托管的邮件服务器。 Web 服务器位于 DMZ 接口(防火墙/网络术语)中,邮件服务器位于内部接口中。每个接口都在不同的 IP 子网上运行(同样是网络的东西)。邮件域 (mail.ourdomain.com) 的 DNS 解析为我们防火​​墙的外部 IP,它被配置为将该流量路由到内部邮件服务器。但是,该配置仅适用于来自外部接口的流量(外部流量)。来自 DMZ 接口的流量(从我们的网络服务器发送的邮件)无法路由到内部邮件服务器。

    您可以快速检查一下是否有同样的问题。 SSH 到您的 Web 服务器并尝试使用 dns 名称 ping 邮件服务器。

    ping mail.domain.co.uk
    

    如果您得到响应,那么这可能不是同一个问题。

    否则,请与负责防火墙/网络安全的人员联系,并与他们一起确定您需要做什么才能将流量从网络服务器传输到邮件服务器。在我们的例子中,我们为 mail.domain.com 添加了一个 hosts 文件条目,解析为邮件服务器的内部 IP 而不是外部 IP。

    【讨论】:

      猜你喜欢
      • 2010-12-09
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 2013-10-04
      • 2015-08-10
      • 1970-01-01
      相关资源
      最近更新 更多