phpmailer: Ответить, используя только адрес «Ответить»

Я использую phpmailer на своем веб-сайте и для решения проблем со спамом создал почтовый ящик для отправки этих писем (с использованием SMTP).

Я установил электронные письма, чтобы прийтиfrom адрес почтового ящика, а затем я добавилreply to адрес, по которому я хочу получить ответы:

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

Письма успешно отправляются и, похоже, проходят через фильтры спама,but when I press reply it includes both the mailbox account and the reply to account.

Это то, что должно произойти? Я хочу, чтобы ответ на адрес отображался только при нажатии ответа. Это вообще возможно?

Заранее большое спасибо за любую помощь!

Edit:

Глядя на заголовки писем, кажется, что адрес отправителя включается в поле ответа на поле. Я не имею понятия почему!

<code>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
</code>
 chapmanio01 мая 2012 г., 12:20
Похоже, это происходит со всеми почтовыми клиентами, глядя на заголовки, которые он определяет для ответа с обоими адресами:Reply-to: Mailbox name <[email protected]>, Reply to name <[email protected]> Интересно, почему это происходит.
 chapmanio01 мая 2012 г., 12:45
Я пока не могу ответить на свой вопрос, но, глядя на код phpmailer, это происходит из-за появления кода AddReplyToпосл код SetFrom, и phpmailer добавляет адрес SetFrom в список replyto, если он еще не определен.
 Stuart01 мая 2012 г., 12:14
Можете ли вы изучить необработанные заголовки одного из писем, которые генерирует скрипт? Это поможет объяснить вещи.
 user55784601 мая 2012 г., 12:14
Не то, что я ожидал бы, звучит как проблема с вашим почтовым клиентом, попробуйте другой, чтобы увидеть, если это так
 user55784601 мая 2012 г., 12:33
выследить функцию AddReplyTo ()

Ответы на вопрос(2)

Решение Вопроса

и он досадно / досадно прост! В основном нужно добавить ответ на адресад адрес отправителя:

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

Более подробно рассмотрим код 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;
}

В частности, эта строка:

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

Спасибо за вашу помощь всем

 Synchro02 мар. 2016 г., 14:46
На самом деле, это ошибочное поведение было удалено из PHPMailer много лет назад, поэтому этот ответ больше не применяется.
 Otvazhnii04 июн. 2014 г., 12:19
Вы, наверное, используете раннюю версию. Это уже не хороший ответ. Я пробовал по-разному, phpmailer кажется более надежным, чем мои хитрые уловки ... Ваш ввод кажется неправильным "$ this-> AddReplyTo" должно быть "$ smth-> addReplyTo". То есть, не используйте общие слова (например, $ this), и всегда проверяйте орфографию, в этом случае это «addReplyTo», начинающийся со строчной буквы «add»

в текущих версиях PHPMailers есть функцияclearReplyTos () очистить массив ответа.

    $mail->ClearReplyTos();
    $mail->addReplyTo([email protected], 'EXAMPLE');
 Vincent14 нояб. 2018 г., 18:01
Это именно то, что я искал. Спасибо

Ваш ответ на вопрос