首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php邮件“从”头没有行为

php邮件“从”头没有行为
EN

Stack Overflow用户
提问于 2014-03-30 21:50:54
回答 1查看 130关注 0票数 0

我有个奇怪的问题。

我有一个“标准”电子邮件,我使用它包装php mail()函数。这已经使用了几年,在我的网站上的两个地方每天都很高兴地发送邮件。但是,在同一主机上同一站点的不同部分重复使用相同的包含时,我发现我无法发送包含“From”标题的邮件。唯一的区别是站点上的这个新的发送位置是一个基本的、受保护的目录。

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

因此,我设置了其他标题(因为这包含多部分HTML电子邮件):

代码语言:javascript
复制
$headers  = "From: $fromName <$fromEmail>\n";
$headers .= "Reply-To: \"$fromName\" <$fromEmail>\n";
$headers .= "Sender: \"$fromName\" <$fromEmail>\n";

这在站点上的两个位置可以很好地工作,但是包含“From”行会导致同一主机上第三个位置的邮件发送失败。代码在我的开发机器上也能正常工作,只有Live才不会从第三个位置发送邮件。现在..。

  1. 是的,我知道我使用的是"\n“,而不是"\r\n",但我的经验是,"\r\n”在Windows主机上是必要的,但在*ix主机上会引起问题--是的,我知道RFC说的是CRLF,所以如果它在Windows主机上,但在*ix上以"\n“的形式保留为”\n“,则包装器中的‘修正’。
  2. 不,设置"\r\n“没有任何区别!
  3. 我使用了mail()第五个参数并使用了-f,但这只给了我代表
  4. “发件人”字段实际上具有这样的效果:在打开收件人看到的消息时,至少在Pretty_name email_address中,发件人被显示为email_address,而不是Pretty_name
  5. 我曾经体验过ini-set,但它只设置了一个电子邮件地址,并且消息已经与期望的来自电子邮件地址的信息相匹配,这是“Pretty_name”无法工作的原因。

所以请记住-相同的代码在同一站点的其他地方运行时没有任何问题,但是这里的问题似乎是(出于我还不知道的原因)相同的代码只能在没有这个位置的“from”头的情况下使用。

有谁对这种不一致的行为有什么看法吗?

Thx

EN

回答 1

Stack Overflow用户

发布于 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。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22750343

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档