我试图了解如何在使用PHPMailer时设置DSN。我知道在SMTP协议级别,DSN是在RCPT TO之后指定的,例如, RCPT TO:NOTIFY = SUCCESS,FAILURE ORCPT = rfc822; recipientemail@gmail.com
另外,如果可能的话,我想将DSN指向发件人地址以外的地址。感谢任何指点,谢谢。
答案 0 :(得分: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";
答案 1 :(得分:1)
我只是测试,它对我有用,修改 class.smtp.php
原始代码:
public function recipient($toaddr)
{
return $this->sendCommand(
'RCPT TO',
'RCPT TO:<' . $toaddr . '> NOTIFY=SUCCESS,FAILURE ORCPT=rfc822;',
array(250, 251)
);
}
例如,更改为:
history: string[] = [];
constructor(private router: Router) {
router.events
.filter(event => event instanceof NavigationEnd)
.subscribe(event => {
this.history.push(event.url);
});
}
onBack() {
if (this.history.length > 1) {
// pop current page
this.history.pop();
// pop previous page (later it will be added)
this.history.pop();
window.history.back();
}
}
onHome() {
window.location.replace(window.location.origin);
}
答案 2 :(得分:0)
如何在没有fput的最新版本的phpmailer中完成此操作($ this-&gt; smtp_conn,&#34; RCPT TO:&lt;&#34;。$ to。&#34;&gt;在我能看到的任何地方的smtp文件中的哪一行?
最接近它,我能看到的是唯一提到RCPT TO的地方。
public function recipient($toaddr)
{
return $this->sendCommand(
'RCPT TO',
'RCPT TO:<' . $toaddr . '>',
array(250, 251)
);
}