2015-09-03 3 views
2

Я использую PHPmailer, и я хочу ответить на письмо. Я получаю электронные письма с phpimap вместе со своими message_id. Я использую PHPmailer, чтобы попытаться ответить на электронную почту. Я использовал message_id вместе с In-Reply-To в addCustomHeader. Я запускаю код, и когда я проверяю электронную почту, он появляется как новое сообщение, а не ответ. Где я неправ?Ответ на письмо с PHPmailer

require 'PHPMailer-master/PHPMailerAutoload.php'; 

      $mail = new PHPMailer; 

      //$mail->SMTPDebug = 3;        // Enable verbose debug output 

      $mail->isSMTP();          // Set mailer to use SMTP 
      $mail->Host = 'mail.domain.co.uk'; // Specify main and backup SMTP servers 
      $mail->SMTPAuth = true;        // Enable SMTP authentication 
      $mail->Username = '[email protected]';     // SMTP username 
      $mail->Password = 'testing';       // SMTP password 
      $mail->SMTPSecure = 'tls';       // Enable TLS encryption, `ssl` also accepted 
      $mail->Port = 587;         // TCP port to connect to 

      $mail->FromName = 'Mailer'; 
      $mail->addAddress('[email protected]');  // Add a recipient 
      $mail->isHTML(true);       // Set email format to HTML 
      $mail->addCustomHeader('In-Reply-To', $message_id); 
      $mail->Sender = '[email protected]'; 
      $mail->Subject = 'testing'; 
      $mail->Body = 'This is the HTML message body <b>in bold!</b>'; 
      $mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; 

      if(!$mail->send()) { 
       echo 'Message could not be sent.'; 
       echo 'Mailer Error: ' . $mail->ErrorInfo; 
      } else { 
       echo 'Message has been sent'; 
      } 
+0

Email отправляется как ответ, если субъект тот же – madforstrength

+0

Должен ли я добавить 'Re:' infront предмета и мне нужно добавить предыдущие сообщения или почтовый клиент сделает это автоматически? – user892134

+0

Вам просто нужно сохранить тему тем же, и отдых будет сделан почтовым клиентом. – madforstrength

ответ

4

Это вполне разумно, чтобы иметь каждое сообщение в потоке, используя другую сюжетную линию, так нарезание резьбы зависит только от сюжетной линии, как последняя инстанция запасного варианта, если вы делаете все остальное не так. Это на самом деле очень раздражает, когда клиенты делают это, когда вы заканчиваете с несвязанными сообщениями, которые имеют один и тот же предмет, сгруппированный вместе.

Резьба и ответы реализованы с использованием заголовков References и In-Reply-Toas defined in RFC2822. Прочтите this guide подробное описание того, как надежно выполнять потоки.

Короткая версия это, первый ответ на сообщение:

$mail->addCustomHeader('In-Reply-To', $message_id); 
$mail->addCustomHeader('References', $message_id); 

Это становится более сложным, если исходное сообщение является лишь последним в длинной нити, но он использует одни и те же заголовки - читать спецификацию и руководство для получения дополнительной информации.

Убедитесь, что ваш идентификатор сообщения правильно отформатирован - он должен быть окружен <>, например <[email protected]>.

Вам не нужно ничего делать с сюжетной линией - хотя это часто встречается в Re:, это не обязательно для того, чтобы эта связь работала, и она также варьируется в разных языках, поэтому на нее нельзя положиться.

+0

Спасибо за это. Чтобы быть ясным, если есть 4 сообщения, мне придется добавить 4 '$ message_id' в' References' или только последнюю '$ message_id'? – user892134

+2

Да, просто добавьте их, поддерживая порядок. Обычно некоторые из них выпадают, если он начинает слишком долго, обычно в середине, поскольку обычно вы хотите получить последние ответы или корень потока. Это руководство обсуждает это. – Synchro

+1

Спасибо, ты очень помог! – user892134

Смежные вопросы