2012-05-01 13 views
31

Używam phpmailer na mojej stronie i aby pomóc w problemach ze spamem Stworzyłem skrzynkę pocztową, aby wysłać te wiadomości e-mail (za pomocą SMTP).phpmailer: Odpowiedz, używając tylko adresu "Reply To"

mam ustawić pocztę przyjść od adres skrzynki pocztowej, a następnie dodałem Odpowiedz na adres gdzie chcę odpowiedzi, aby przejść do:

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

E-maile wysyłać pomyślnie i wydaje się, że przechodzi przez filtry spamu ok, , ale po naciśnięciu przycisku odpowiedzi zawiera zarówno konto skrzynki pocztowej, jak i odpowiedź na konto.

Czy to ma się stać? Chcę tylko, aby adres odpowiedzi pojawiał się, gdy naciśniesz odpowiedź. Czy to możliwe?

Z góry dziękujemy za każdą oferowaną pomoc!


Edit:

Patrząc na nagłówkach e-mail wydaje się, że z adresem jest uzyskiwanie zawarte w odpowiedzi na polu. Nie mam pojęcia, dlaczego!

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

nie co ja spodziewałbym się stało, brzmi jak problem z Twoim klientem poczty, spróbuj jeszcze jeden, aby zobaczyć, czy jest to przypadek –

+0

można sprawdzić surowe nagłówki jednej wiadomości e-mail skrypt generujący? To pomogłoby wyjaśnić pewne rzeczy. – Stuart

+1

Wygląda na to, że dzieje się to ze wszystkimi klientami poczty, patrząc na nagłówki, definiując odpowiedź na oba adresy: 'Odpowiedz-do: Nazwa skrzynki pocztowej <[email protected]>, Odpowiedz na nazwę ' Zastanawiam się, dlaczego tak się dzieje. – chapmanio

Odpowiedz

106

Znalazłem odpowiedź na to i jest denerwująco/frustrująco proste! W zasadzie odpowiedź na adresy potrzebnych do dodania przed FROM adres:

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

Patrząc na kod PHPMailer dokładniej jest to linia wykraczająca:

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

Konkretnie ta linia:

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

Dzięki za pomoc dla wszystkich!

+2

Prawdopodobnie używasz wczesnej wersji. To już nie jest dobra odpowiedź. Próbowałem różnych sposobów, phpmailer wydaje się być bardziej wytrzymały niż moje sztuczki cunny ... Twoje wejście wydaje się błędne "$ this-> AddReplyTo" powinno brzmieć "$ smth-> addReplyTo".Oznacza to, że nie używaj popularnych słów (jak $ this) i zawsze sprawdzaj pisownię, w tym przypadku jest to "addReplyTo" rozpoczynając małe "dodaj" – Otvazhnii

+0

Rzeczywiście, to błędne zachowanie zostało usunięte z PHPMailer lata temu, więc ta odpowiedź nie ma już zastosowania . – Synchro

12

Przynajmniej w obecnych wersjach PHPMailers jest funkcja clearReplyTos(), aby opróżnić tablicę odpowiedzi.

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