phpmailer:仅使用"回复"地址回复

cha*_*nio 50 php phpmailer

我在我的网站上使用phpmailer并帮助解决垃圾邮件问题我创建了一个邮箱来发送这些电子邮件(使用SMTP).

我已经设置了电子邮件来该邮箱地址,然后我添加了一个答复解决了,我想的答复去:

$mail = new PHPMailer();

$mail->IsSMTP();
$mail->SMTPAuth   = true;
$mail->SMTPSecure = 'tsl';
$mail->SMTPDebug  = 1;
$mail->Host       = EMAIL_HOST;
$mail->Port       = EMAIL_PORT;
$mail->Username   = EMAIL_USER;
$mail->Password   = EMAIL_PASS;

$mail->SetFrom('mailbox@email.com', 'Mailbox name');
$mail->AddReplyTo('replyto@email.com', 'Reply to name');
$mail->AddAddress('user@email.com', 'User name);
Run Code Online (Sandbox Code Playgroud)

电子邮件发送成功,似乎可以通过垃圾邮件过滤器,但是当我按回复时,它包括邮箱帐户和帐户回复.

这是什么意思发生?我只想按回复时出现回复地址.这甚至可能吗?

非常感谢您提供的任何帮助!


编辑:

查看电子邮件标题,似乎来自地址的内容将包含在回复字段中.我不知道为什么!

Date: Tue, 1 May 2012 11:16:25 +0100
To: User name <user@email.com>
From: Mailbox name <mailbox@email.com>
Reply-to: Mailbox name <mailbox@email.com>, Reply to name <replyto@email.com
Subject: Email subject
Message-ID: <54c530c0d1f3ff33fc87c4c41c2c9ffd@localhost>
X-Priority: 3
X-Mailer: PHPMailer 5.1 (phpmailer.sourceforge.net)
MIME-Version: 1.0
Content-Type: multipart/alternative;
     boundary="b1_54c530c0d1f3ff33fc87c4c41c2c9ffd"

--b1_54c530c0d1f3ff33fc87c4c41c2c9ffd
Content-Type: text/plain; charset = "iso-8859-1"
Content-Transfer-Encoding: 8bit
Run Code Online (Sandbox Code Playgroud)

cha*_*nio 134

我找到了答案,这令人烦恼/令人沮丧!基本上,需要在起始地址之前添加对地址的回复:

$mail->AddReplyTo('replyto@email.com', 'Reply to name');
$mail->SetFrom('mailbox@email.com', 'Mailbox name');
Run Code Online (Sandbox Code Playgroud)

更详细地查看phpmailer代码,这是违规行:

public function SetFrom($address, $name = '',$auto=1) {
   $address = trim($address);
   $name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim
   if (!self::ValidateAddress($address)) {
     $this->SetError($this->Lang('invalid_address').': '. $address);
     if ($this->exceptions) {
       throw new phpmailerException($this->Lang('invalid_address').': '.$address);
     }
     echo $this->Lang('invalid_address').': '.$address;
     return false;
   }
   $this->From = $address;
   $this->FromName = $name;
   if ($auto) {
      if (empty($this->ReplyTo)) {
         $this->AddAnAddress('ReplyTo', $address, $name);
      }
      if (empty($this->Sender)) {
         $this->Sender = $address;
      }
   }
   return true;
}
Run Code Online (Sandbox Code Playgroud)

特别是这一行:

if (empty($this->ReplyTo)) {
   $this->AddAnAddress('ReplyTo', $address, $name);
}
Run Code Online (Sandbox Code Playgroud)

谢谢大家的帮助!

  • 你可能使用早期版本.这不再是一个好的答案.我尝试了不同的方法,phpmailer似乎比我的cunny技巧更强大...你的输入似乎错误"$ this-> AddReplyTo"应该是"$ smth-> addReplyTo".也就是说,不要使用常用词(比如$ this),并且总是检查拼写,在这种情况下,它是"addReplyTo",从小写"添加"开始 (2认同)

小智 21

至少在当前版本的PHPMailers中,有一个函数clearReplyTos()来清空回复数组.

    $mail->ClearReplyTos();
    $mail->addReplyTo(example@example.com, 'EXAMPLE');
Run Code Online (Sandbox Code Playgroud)