【问题标题】:Using Return-path when sending mail through SMTP using PHP使用 PHP 通过 SMTP 发送邮件时使用 Return-path
【发布时间】:2011-12-10 03:46:23
【问题描述】:

使用 PHP 通过 authenticated SMTP 发送邮件时,有没有办法设置返回路径? 我希望退回邮件被另一个电子邮件地址而不是“发件人”地址捕获。

我知道有一种方法可以使用“普通”PHP mail() 函数(通过在第 5 个参数中设置“-f”标志),但我不知道如何使用 SMTP 进行管理。

也尝试过 PEAR 的 Mail-package,但在 headers 中设置 Return-path 并没有完成这项工作。

【问题讨论】:

  • 请澄清您所说的 SMTP 是什么意思;您想到哪个库/功能?
  • 返回路径通常由 MTA 根据您的信封发件人地址设置,例如在 SMTP 中:MAIL FROM:
  • 参见en.wikipedia.org/wiki/Bounce_address : [...]当电子邮件被放入收件人邮箱时,会创建一个名为“Return-Path:”的新邮件标头,其中包含邮件中的地址发件人命令。 [...]
  • 谢谢@Gryphius,我明白了。但我真正想要实现的是 Return-Path 与 MAIL FROM 中设置的电子邮件地址不同,而在 PHP 中使用经过身份验证的 SMTP 发送邮件......有没有办法做到这一点?
  • 不,因为根据定义,返回路径是 MAIL-FROM 中指定的地址,并且它通常由接收 MTA 设置,因此无法更改。我开始认为您正在尝试解决错误的问题。为什么要使用与信封发件人地址不同的返回路径标头?您确定您没有将 MAIL FROM/信封发件人地址与“发件人:”标头混淆吗?

标签: php email smtp email-headers return-path


【解决方案1】:

这是您需要做的。

您需要将标头中的“返回路径”设置为要用作退回电子邮件的电子邮件。这对我有用。

例如:

$headers['From']    = 'richard@example.com';
$headers['To']      = 'joe@example.com';
$headers['Subject'] = 'Test message';
$headers['Return-Path'] = 'bounce@example.com';

【讨论】:

    【解决方案2】:

    将第四个mail()-参数(additional_headers)设置为"Return-path:mybouncereceiver@example.com"

    例子:

    $to     = "to@example.com";
    $from       = "from@example.com";
    $bounce     = "mybouncereceiver@example.com";
    $subj       = "mysubject";
    $message    = "blah";
    
    $headers    = "From:$from\r\nReturn-path:$bounce"
    
    mail($to, $subj, $message, $headers);
    

    您可以看到您将多个additional_headers\r\n(换行符)分开。

    另请参阅:http://php.net/manual/en/function.mail.php

    【讨论】:

    • 谢谢,但这是 mail() 函数,它不使用 SMTP 发送邮件。我正在寻找一种在通过 SMTP 发送邮件时设置返回路径的方法。
    • @neoMagic 你需要更具体。所有邮件都通过 SMTP 在某个层发送,但也许您的意思是使用另一个函数/库发送?
    • 我的意思是使用 PHP 通过 authenticated SMTP 发送邮件,例如使用 PEAR 邮件包。
    猜你喜欢
    • 2010-12-21
    • 2011-08-11
    • 2016-06-05
    • 2012-09-10
    • 2017-12-14
    • 2012-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多