3

我试图找出使用 PHPMailer 时如何设置 DSN。我知道在 SMTP 协议级别,DSN 在 RCPT TO 之后指定,例如 RCPT TO: NOTIFY=SUCCESS,FAILURE ORCPT=rfc822;recipientemail@gmail.com

另外,如果可能的话,我想将 DSN 定向到发件人地址以外的地址。感谢任何指针,谢谢。

4

4 回答 4

5

我发现PHPMailer不支持DSN,所以我不得不自己修改class.smtp.php。

原始代码:

fputs($this->smtp_conn,"RCPT TO:<" . $to . ">" . $this->CRLF);

改成:

 fputs($this->smtp_conn,"RCPT TO:<" . $to . "> NOTIFY=SUCCESS,FAILURE ORCPT=rfc822;" . $to ."" . $this->CRLF);

至于将 DSN 定向到发件人地址以外的地址,这可以通过定义来实现:

 $mail->Sender = "bounced@email.com";
于 2012-05-02T08:52:17.317 回答
1

我只是测试,它对我有用,修改class.smtp.php

原始代码:

public function recipient($toaddr)
{
    return $this->sendCommand(
        'RCPT TO',
        'RCPT TO:<' . $toaddr . '>',
        array(250, 251)
    );
}

例如,更改为:

public function recipient($toaddr)
{
    return $this->sendCommand(
        'RCPT TO',
        'RCPT TO:<' . $toaddr . '> NOTIFY=SUCCESS,FAILURE ORCPT=rfc822;',
        array(250, 251)
    );
}
于 2017-11-27T10:34:03.053 回答
0

在我能看到的 smtp 文件中没有 fputs($this->smtp_conn,"RCPT TO:<" . $to . "> 等行的最新版本的 phpmailer 中,如何做到这一点?

最接近它,我可以看到是唯一提到 RCPT TO 的地方。

public function recipient($toaddr)
{
    return $this->sendCommand(
        'RCPT TO',
        'RCPT TO:<' . $toaddr . '>',
        array(250, 251)
    );
}
于 2016-01-28T18:18:02.833 回答
0

我发现了在 PHPMAiler 上设置 DSN 的官方命令:

$mail->dsn = '成功,失败,延迟';

有可能按时使用这三个命令,或者隔离。

前任:

$mail = new PHPMailer(true);
$mail->dsn = 'SUCCESS';

服务器上默认启用 SUCCESS 和 FAILURE 命令,但 SUCCESS 是启用返回“交付状态通知”(Notificação de Status de Entrega)的必要条件。

注意:验证“PHPMailer.php”的第 343 行以获得更多说明。

于 2021-10-05T12:02:44.073 回答