PHPMailer如何设置退回邮件地址

PHPMailer how to set bounce email address

我知道有很多指南,但我试了很多都没有结果。 我还尝试重新调整参数,以便 sender 在 replyTo 之前发送,反之亦然,等等,但仍然如此。

这个想法是让收件人看到它来自某物@gmail.com,但在回复(人类或机器人作为退回邮件)时总是回复 noreply@custom.com

无论我做什么,退回的电子邮件总是投递到 something@gmail.com 而不是 noreply@custom.com

use PHPMailer\PHPMailer\Exception;
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;

require 'apps/PHPMailer/src/Exception.php';
require 'apps/PHPMailer/src/PHPMailer.php';
require 'apps/PHPMailer/src/SMTP.php';

try {
    $mail = new PHPMailer(true);

    $mail->CharSet = 'UTF-8';                                   // UTF8 Encoding
    $mail->Encoding = 'base64';                                 // Needs to be set with UTF8
    //$mail->SMTPDebug = SMTP::DEBUG_SERVER;                        // Enable verbose debug output
    $mail->isSMTP();                                            // Send using SMTP
    $mail->Host       = "smtp.gmail.com";                 // Set the SMTP server to send through
    $mail->SMTPAuth   = true;                                   // Enable SMTP authentication
    $mail->Username   = "something@gmail.com";                     // SMTP username
    $mail->Password   = "somePassword";                // SMTP password
    $mail->SMTPSecure = "tls";
    $mail->Port       = 587;                 // TCP port to connect to, use 465 for `PHPMailer::ENCRYPTION_SMTPS` above

    //Sender
    $mail->setFrom('something@gmail.com');
    $mail->addReplyTo('noreply@custom.com');
    $mail->Sender = 'noreply@custom.com';

    // Recipient
    $mail->addAddress('fndsgfds@fsscd.com');

    // Content
    $mail->isHTML(true);                                  // Set email format to HTML
    $mail->Subject = "test bouncing";
    $mail->Body    = "teting";
    //$mail->AltBody = strip_tags($row_campaign['text']);
                                            
    $mail->MessageID = $messageId; // removed from example here, but is stated above
    $mail->addCustomHeader('In-Reply-To', $messageId);

    $mail->send();
}
catch (Exception $e) {
    echo "Error: {$mail->ErrorInfo}";
    die();
}
unset($mail);

知道问题出在哪里吗? PHPMailer 6.1.6

退回电子邮件地址是 SMTP MAIL FROM 地址,也称为 信封发件人 。这通常与 From 地址相同(PHPMailer 默认使用发件人地址作为发件人),但不同是完全正常的(取决于 DMARC 配置)。在 PHPMailer 中,您通过设置 Sender 属性 来设置它,就像您在这一行中所做的那样:

$mail->Sender = 'noreply@custom.com';

当服务器 收到 一条消息时,它会获取信封发件人并将其添加到 Return-Path header 中的消息中;这不是发送服务器应该曾经做的事情。

因此,要更改退回地址,请更改该设置;它主要独立于 from 和 reply-to 地址。但是请注意,如果您没有将它配置为您的 gmail 用户名的别名,gmail 可能会忽略它。