Я столкнулся со странной проблемой с 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 </p>
<pre><code>$mail->IsSendmail();
$mail->From = "example_from@domain.com";
$mail->FromName = "First Last";
$to = "example@domain.com";
$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;
}
} catch (phpmailerException $ e) {
echo $ e-> errorMessage ();
}
Приведенный выше код повторяет подтверждение «Сообщение отправлено», но затем отправляет два электронных письма. Если я закомментирую строку $mail->send()
, я все равно получу подтверждение «сообщение отправлено» и получу только одно сообщение. Если я удалю условное утверждение и оставлю строку $mail->send()
закомментированной, письмо не будет отправлено.
Почему при добавлении условного выражения электронное письмо отправляется без вызова метода $mail->send()
? Как правильно добавить настраиваемое подтверждающее сообщение?