78 Stimmen

phpmailer: Antworten nur mit "Reply To"-Adresse

Ich verwende phpmailer auf meiner Website, und um Spam-Problemen vorzubeugen, habe ich ein Postfach eingerichtet, von dem aus ich diese E-Mails versenden kann (per SMTP).

Ich habe die E-Mails so eingestellt, dass sie kommen von die Mailbox-Adresse und dann habe ich eine Antwort an die Adresse, an die die Antworten gehen sollen:

$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);

Die E-Mails werden erfolgreich versendet und scheinen die Spam-Filter problemlos zu passieren, aber wenn ich auf "Antworten" drücke, werden sowohl das Postfachkonto als auch das Konto, an das die Antwort gerichtet ist, angezeigt. .

Ist das so gewollt? Ich möchte nur, dass die Antwort an die Adresse erscheint, wenn Sie auf "Antworten" drücken. Ist das überhaupt möglich?


Edita:

Wenn ich mir die E-Mail-Kopfzeilen ansehe, scheint es, als ob die Absenderadresse in das Feld "Antwort an" aufgenommen wird. Ich habe keine Ahnung, warum!

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

174voto

chapmanio Punkte 2784

Ich habe die Antwort auf diese Frage gefunden, und sie ist ärgerlich/frustrierend einfach! Im Grunde müssen die Antwortadressen hinzugefügt werden vor die Absenderadresse als solche:

$mail->addReplyTo('replyto@email.com', 'Reply to name');
$mail->SetFrom('mailbox@email.com', 'Mailbox name');

Wenn man sich den phpmailer-Code genauer ansieht, ist dies die fehlerhafte Zeile:

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;
}

Insbesondere diese Zeile:

if (empty($this->ReplyTo)) {
   $this->AddAnAddress('ReplyTo', $address, $name);
}

Vielen Dank an alle für ihre Hilfe!

47voto

Fabian Peter Punkte 456

Zumindest in den aktuellen Versionen von PHPMailers gibt es eine Funktion clearReplyTos() um das Antwort-an-Array zu leeren.

    $mail->ClearReplyTos();
    $mail->addReplyTo(example@example.com, 'EXAMPLE');

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X