php mail'来自'标题不表现

时间:2014-03-30 21:50:54

标签: php email

我有一个奇怪的问题。

我有一个'标准'电子邮件包括我使用包裹php mail()函数。这已经使用了几年,在我的网站的两个地方非常愉快地每天发送邮件。但是,在同一主机上同一站点的不同部分重新使用相同的包含时,我发现我无法发送包括“来自”的邮件。头。唯一的区别是网站上的这个新发送位置是一个基本的受版权保护的目录。

所以在人们跳进来告诉我这个或那个之前,请记住,这是与在同一主机上同时工作的完全相同的代码,因此完全相同的包含在两个位置而不是第三个位置。

所以我设置了其他标题(因为它带有多部分HTML电子邮件):

$headers  = "From: $fromName <$fromEmail>\n";
$headers .= "Reply-To: \"$fromName\" <$fromEmail>\n";
$headers .= "Sender: \"$fromName\" <$fromEmail>\n";

这在网站上的两个位置都可以正常工作,但是包含了&#39;来自&#39; line导致同一主机上的第三个位置发送邮件失败。代码也可以在我的开发机器上正常工作,它只是不能从第三个位置发送邮件的Live托管盒。现在...

  1. 是的,我知道我正在使用&#34; \ n&#34;而不是&#34; \ r \ n&#34;,但我的经历是 &#34; \ r \ n&#34;在Windows主机上是必需的但在* ix上会导致问题 主机 - 是的,我知道RFC说CRLF - 所以这是“固定的”#39; 稍后在包装器中,如果它在Windows主机上,但保留为&#34; \ n&#34;上 * ix
  2. 不,设置&#34; \ r \ n&#34;没有任何区别!
  3. 我已经体验过mail()第五个参数并使用-f,但是那个 只给我代表
  4. 发送的邮件
  5. 发件人&#39;字段实际上具有打开收件人看到的消息的效果;但是,从Pretty_name [email_address]开始,至少在Outlook中,在邮件列表中,发件人显示为email_address,而不是&#39; Pretty_name&#39;
  6. 我已经体验过ini-set,但只设置了一个电子邮件地址,并且该消息已经与所需的From Email地址一起发送,它是&#39; Pretty_name&#39;那不会工作
  7. 所以请记住 - 完全相同的代码在同一网站上的其他位置运行没有任何问题,但这里的问题似乎是(我还没有理解的原因)相同的代码只能在没有&#39; From&#39;的情况下使用。来自这个位置的标题。

    任何关于什么似乎有这种不一致行为的想法?

    THX

1 个答案:

答案 0 :(得分:0)

首先,如果mail()返回false,请确保输出最后一条错误消息:

print_r(error_get_last());

如果错误消息并未真正表明电子邮件本身,那么php.ini文件中可能存在错误(例如升级期间的配置错误等)。您可以通过将问题代码隔离到单独的文件来测试,然后暂时将php.ini文件替换为默认文件,重新启动Web服务器以使新的php.ini生效,然后再次运行测试(I&# 39;建议将phpinfo()与脚本一起转储,以便确认新的php.ini是否有效。

其次,使用\ r \ n。我知道它在你的测试中没有功能上的区别,但是它是正确的行结尾并仅使用\ n将导致一些实际遵循规则的邮件服务器出现问题。当您使用\ n时,您依靠邮件服务器来获得处理错误自动更正的其他代码。

使用\ r \ n可能会导致某些编码不良的服务器出现问题,这些服务器不遵守规则,但这并不是您要解决的问题。始终遵循RFC。