в случае, если вам нужно сделать несколько вещей в случае неудачных писем в разных местах.
лкнулся со странной проблемой с PHPmailer (версия 5.1), которую я пытаюсь обойти. Я видел здесь немало хороших отзывов, так что я решил попробовать. Я обнаружил, что при попытке создать настраиваемое подтверждающее сообщение с условным оператором на основе$mail->send()
Я получаю дубликаты писем. Я могу скопировать его с помощью общего сценария testemail.php, который поставляется вместе с загрузкой phpmailer. Вот код:
require '../class.phpmailer.php';<br>try {<br>$mail = new PHPMailer(true); //New instance, with exceptions enabled<br>$mail->SMTPDebug = 1;<br>$mail->IsSMTP(); // tell the class to use SMTP<br>$mail->SMTPAuth = true; // enable SMTP authentication<br>$mail->Port = 25; // set the SMTP server port<br>$mail->Host = "mail.domain.com"; // SMTP server<br>$mail->Username = "username"; // SMTP server username<br>$mail->Password = "password"; // SMTP server password
<pre><code>$mail->IsSendmail();
$mail->From = "[email protected]";
$mail->FromName = "First Last";
$to = "[email protected]";
$mail->AddAddress($to);
$mail->Subject = "PHP Mailer test";
$message = "This is a test. \n";
$mail->Body = $message;
$mail->Send();
if ($mail->Send()) {
echo 'Message has been sent.';
} else {
echo "Mailer Error: " . $mail->ErrorInfo;
}
</code></pre>
} catch (phpmailerException $e) {<br>echo $e->errorMessage();<br>}
Приведенный выше код повторяет подтверждение «Сообщение отправлено», но затем отправляет два электронных письма. Если я закомментирую$mail->send()
По-прежнему я получаю подтверждение «Сообщение отправлено» и получаю только одно сообщение. Если я удалю условное заявление и оставлю$mail->send()
строка закомментирована, электронное письмо не отправлено.
Почему добавление условного оператора приводит к отправке электронного письма без вызова$mail->send()
метод? Как правильно добавить настраиваемое подтверждающее сообщение?