我正在尝试将 Request-Path 标头与 PHPmail()
函数一起使用,但它不起作用。Return-Path 不断更改为 From 标头。
通过谷歌搜索,我找到了有用的技巧,但没有一个对我有用,尽管我学到了很多东西。
这是我正在使用的非常简单的代码:
$headers ='From: "Marty"<from_param@gmail.com>'."\r\n";
//$headers .='Return-Path: return_path@gmail.com'."\r\n";
$headers .='Reply-To: reply_to@gmail.com'."\r\n";
$headers .='Content-Type: text/plain; charset="iso-8859-1"'."\r\n";
$headers .='Content-Transfer-Encoding: 8bit';
$returnPath = '-freturn_path@gmail.com';
if (mail('goldorak_loves_albator@gmail.com', 'My subject', 'My body', $headers, $returnPath)) {
echo 'Message sent';
} else {
echo 'Message not sent';
}
这是我迄今为止尝试过的:
- 在标题中使用
\n
和\r\n
作为换行符 - 与
$header
字符串中的返回路径 - Return-Path 作为
mail()
函数的第 5 个参数 - 带有返回路径 in
$headers
和 in$returnPath
$returnPath
变量后面有和没有空格-f
- with
-r
in the$returnPath
, 有和没有空格, 有和没有-f
正如我所读到的,exim 配置可能存在一些问题,它替换了 PHP 用户的 Return-Path。但这不是这里的情况,因为它被From
标题所取代。
我几乎可以肯定这是一个配置问题,因为这段代码非常简单,但我找不到任何有用的东西......
谢谢您的帮助 !
编辑:我们不在我们的 Linux 服务器上使用 Exim,所以问题不来自那里。我尝试使用 SwiftMailer 实现相同的目标,但无济于事。Return-Path 仍然被忽略....
require('swift/lib/swift_required.php');
$transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, 'ssl')
->setUsername('username@gmail.com')
->setPassword('myPassword');
$mailer = Swift_Mailer::newInstance($transport);
// Create a message
$message = Swift_Message::newInstance('Wonderful Subject')
->setTo(array('goldorak_loves_albator@gmail.com'))
->setFrom(array('from@gmail.com' => 'Myself'))
->setReturnPath('return_path@gmail.com')
->setBody('Here is the message itself')
;
// Send the message
$result = $mailer->send($message);
这直接取自 SwiftMailer 示例。