我有个奇怪的问题。
我有一个“标准”电子邮件,我使用它包装php mail()函数。这已经使用了几年,在我的网站上的两个地方每天都很高兴地发送邮件。但是,在同一主机上同一站点的不同部分重复使用相同的包含时,我发现我无法发送包含“From”标题的邮件。唯一的区别是站点上的这个新的发送位置是一个基本的、受保护的目录。
所以,在人们跳进来告诉我这个或那个之前,记住,这是完全相同的代码,就像它在同一台主机上同时工作,因此,同样的代码包含在两个位置,而不是第三个位置。
因此,我设置了其他标题(因为这包含多部分HTML电子邮件):
$headers = "From: $fromName <$fromEmail>\n";
$headers .= "Reply-To: \"$fromName\" <$fromEmail>\n";
$headers .= "Sender: \"$fromName\" <$fromEmail>\n";这在站点上的两个位置可以很好地工作,但是包含“From”行会导致同一主机上第三个位置的邮件发送失败。代码在我的开发机器上也能正常工作,只有Live才不会从第三个位置发送邮件。现在..。
所以请记住-相同的代码在同一站点的其他地方运行时没有任何问题,但是这里的问题似乎是(出于我还不知道的原因)相同的代码只能在没有这个位置的“from”头的情况下使用。
有谁对这种不一致的行为有什么看法吗?
Thx
发布于 2016-08-01 18:32:00
首先,如果mail()返回false,那么确保输出最后一个错误消息:
print_r(error_get_last());
如果错误消息并没有真正显示电子邮件本身,那么它很可能是php.ini文件中的错误(例如升级过程中的配置错误等等)。您可以通过将问题代码隔离到一个单独的文件来测试这个问题,然后暂时将php.ini文件替换为默认的文件,重新启动您的web服务器以让新的php.ini生效,然后再次运行您的测试(我建议将phpinfo()连同您的脚本一起转储,这样您就可以确认新的php.ini是否有效)。
第二,使用\r\n,我知道它在测试中没有功能上的区别,但是它是正确的行结束,使用只\n将在一些实际上遵循规则的邮件服务器中造成问题。使用\n时,您依赖邮件服务器拥有处理自动更正错误的附加代码。
使用\r\n可能会在不遵循规则的一些编码不当的服务器上造成问题,但这并不是真正需要解决的问题。一直跟着RFC。
https://stackoverflow.com/questions/22750343
复制相似问题