2012-05-01 31 views
31

Estoy usando phpmailer en mi sitio web y para ayudar con los problemas de correo no deseado He creado un buzón para enviar estos correos electrónicos (usando SMTP).phpmailer: Responder utilizando solo la dirección "Responder a"

he puesto los mensajes de correo electrónico a venir de las direcciones de correo y luego he añadido una dirección respuesta a por donde quiero las respuestas para ir a:

$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('[email protected]', 'Mailbox name'); 
$mail->AddReplyTo('[email protected]', 'Reply to name'); 
$mail->AddAddress('[email protected]', 'User name); 

Los mensajes de correo electrónico enviar con éxito y parece pasar por los filtros de correo basura ok, pero cuando presiono responder, incluye tanto la cuenta del buzón como la respuesta a la cuenta.

¿Esto es lo que debe suceder? Solo quiero que aparezca la respuesta a la dirección cuando presiona responder. ¿Esto es posible?

¡Muchas gracias de antemano por su ayuda!


Editar:

En cuanto a los encabezados de correo electrónico parece que el de la dirección está consiguiendo incluyen en la respuesta al campo. ¡No tengo ni idea de porqué!

Date: Tue, 1 May 2012 11:16:25 +0100 
To: User name <[email protected]> 
From: Mailbox name <[email protected]> 
Reply-to: Mailbox name <[email protected]>, Reply to name <[email protected] 
Subject: Email subject 
Message-ID: <[email protected]> 
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 
+0

no lo que cabe esperar que suceda, suena como un problema con su cliente de correo, probar con la otra para ver si este es el caso –

+0

Se puede examinar los encabezados primas de uno de los de correo electrónico está generando la secuencia de comandos? Eso ayudaría a explicar las cosas. – Stuart

+1

Parece que está sucediendo con todos los clientes de correo, mirando los encabezados está definiendo la respuesta con ambas direcciones: 'Responder-a: Nombre de buzón <[email protected]>, Responder al nombre ' Me pregunto por qué está sucediendo eso. – chapmanio

Respuesta

106

He encontrado la respuesta a esto, y es molesto/frustrantemente simple! Básicamente, la respuesta a las direcciones necesarias para ser añadido antes la dirección del remitente:

$mail->AddReplyTo('[email protected]', 'Reply to name'); 
$mail->SetFrom('[email protected]', 'Mailbox name'); 

Si examina el código phpmailer con más detalle esta es la línea en cuestión:

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

Específicamente esta línea:

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

Gracias por su ayuda a todos!

+2

Probablemente use una versión anterior. Esta no es la buena respuesta más. Probé de diferentes maneras, phpmailer parece ser más robusto que mis trucos cunny ... Tu entrada parece incorrecta "$ this-> AddReplyTo" debería ser "$ smth-> addReplyTo".Es decir, no use palabras comunes (como $ this), y siempre revise la ortografía, en este caso es "addReplyTo" comenzando en minúsculas "add" – Otvazhnii

+0

De hecho, este comportamiento erróneo fue eliminado de PHPMailer hace años, por lo que esta respuesta ya no se aplica . – Synchro

12

Al menos en las versiones actuales de PHPMailers, existe una función clearReplyTos() para vaciar la matriz de respuestas.

$mail->ClearReplyTos(); 
    $mail->addReplyTo([email protected], 'EXAMPLE'); 
Cuestiones relacionadas