【发布时间】:2013-11-14 19:15:53
【问题描述】:
对于我的项目,我必须创建一个发送两封电子邮件的函数。一个给客户,另一个给卖家。两封电子邮件的内容不同。
我使用标准PHP邮件函数编写了这两个函数,如下所示。
$to = "xxxx@xxxx.com";
$subject = 'xxxx';
$message = "hello"
$headers .= 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
mail($to, $subject, $message, $headers);
现在,在我自己公司的网络服务器上测试系统时,两封电子邮件似乎都已发送和接收。但是,当我将同一系统迁移到外部服务器时。只发送一封电子邮件。主要是堆栈中的第一封电子邮件。
虽然我怀疑这个问题与后来的服务器配置有关,但我想知道接下来应该去哪里调试这个问题。
【问题讨论】:
-
我没有看到任何发送两封电子邮件的代码...
-
您是否设置了
error_reporting(E_ALL)并收到任何错误/通知?您是否使用过任何其他调试方法(例如检查两台服务器的差异)? -
听起来卖家的邮件服务器出于某种原因将电子邮件过滤为垃圾邮件。如果它在您的测试服务器上运行但在外部服务器上不起作用,可能是因为外部服务器在阻止列表中,与您的脚本无关。
-
$headers 是否设置在您未粘贴的代码中?而且,在您尝试发送第二封电子邮件之前它是否未设置(或清空)(另外,我假设您没有粘贴代码)?如果没有,您将 $headers 附加到未设置的字符串,然后可能稍后将相同的两个 $headers 附加到先前设置的 $headers 字符串。重复的标头可能不允许消息在一台服务器上通过,而另一台则不在乎。
-
另外,删除
$headers .= 'MIME-Version: 1.0' . "\r\n";中的点,因为在$headers = 'MIME-Version: 1.0' . "\r\n";中,第一个 ($headers) 不带一个,也会产生错误。