【问题标题】:PHP/Apache/Sendmail Received: (from apache@localhost)收到 PHP/Apache/Sendmail:(来自 apache@localhost)
【发布时间】:2013-11-14 00:01:54
【问题描述】:

我正在尝试在 RHEL 上使用 PHP 邮件功能和 sendmail 发送邮件。标题中有一行 Received: (from apache@localhost),这导致一些收件人丢弃了邮件。我需要将标头的这一部分替换为适当的用户/域:(比如说 user@example.com)。我已经为此奋斗了一段时间,我只是不知道该怎么办。网络上到处都是讨论。 脚本会指定发件人。

以下是 SMTP 标头的示例:

Received: from <omitted> (<omitted> [127.0.0.1])
    by <omitted> (8.14.4/8.14.4) with ESMTP id rADEwvp4003653
    for <omitted>; Wed, 13 Nov 2013 09:58:57 -0500
Received: (from apache@localhost)
    by <omitted> (8.14.4/8.14.4/Submit) id rADEwvEj003650;
    Wed, 13 Nov 2013 09:58:57 -0500
Date: Wed, 13 Nov 2013 09:58:57 -0500
Message-Id: <omitted>
To: <omitted>
Subject: <omitted>
From: user@example.com
Reply-To: user@example.com

【问题讨论】:

  • 你在使用 POSTFIX 吗?
  • 以下会有所不同吗? Received: from YOUR_CHOICE (apache@localhost) ...
  • @Satya 基于Received: 标头中的信息(版本号),它是sendmail。

标签: php apache sendmail


【解决方案1】:

如果你使用标准的mail()函数有一个隐藏参数,请尝试将“-fuser@domain”作为第五个参数传递 link

【讨论】:

  • 也许您可以尝试其他 php 邮件程序:PHPMailer 或 Swift Mailer 或仅通过 smtp 发送(例如:google),我能想到的最后一个是在您的 sendmail 中静态强制发件人电子邮件配置。
【解决方案2】:

将类似这样的内容作为第四个参数传递。更改 From 字段应该足够了,但不会保护您的邮件免受垃圾邮件文件夹的影响,因为它需要更复杂的东西,例如 SPF 记录和 DKIM 密钥。

$headers = 'From: webmaster@example.com' . "\r\n" .
    'Reply-To: webmaster@example.com' . "\r\n";

【讨论】:

  • 糟糕。我没有注意到已经有“发件人”字段。我的错。
猜你喜欢
  • 2016-09-22
  • 2013-12-17
  • 2015-05-20
  • 2014-01-08
  • 2014-03-16
  • 2017-01-18
  • 1970-01-01
  • 2021-08-01
  • 2013-06-27
相关资源
最近更新 更多