PhpMailer 2 раза шлёт письмо, вместо одного
Есть форма восстановления пароля значит. Поле для емайла, капча гугла, и кнопка. Ввожу емайл, прохожу капчу и жму на кнопку, идёт проверка - если емайл есть в базе отсылаю на почту пароль, иначе ошибка. Для отправки письма использую PhpMailer. Проблема: письмо отправляется 2 раза. Как сделать, чтобы 1 раз отправлялось письмо?
Отправка:
$mail = new PHPMailer;
$mail->CharSet = 'UTF-8';
$mail->isSMTP();
$mail->SMTPAuth = true;
$mail->SMTPDebug = 0;
$mail->Host = 'ssl://smtp.yandex.ru';
$mail->Port = 465;
$mail->Username = '[email protected]';
$mail->Password = 'xxx';
$mail->SMTPSecure = 'ssl';
$mail->setFrom('[email protected]', 'Hmm');
$mail->addAddress($user[0]['email'], $user[0]['login']);
$mail->Subject = 'Востановление пароля';
$body = "<p><strong>Приветствую тебя.</strong></p>";
$body .= "Твой логин - ".$user[0]['login'].", пароль - ".$user[0]['password']." .";
$mail->msgHTML($body);
$mail->send();
if(!$mail->send()) {
echo 'Error';
} else {
echo "success";
}
Ответы (1 шт):
Автор решения: Yakoffka
→ Ссылка
Насколько помню - сам наступил в своё время на эти грабли. У Вас в коде действительно два раза вызывается метод send():
...
// $mail->send(); первая отправка происходит здесь. закомментировать
if (!$mail->send()) { // а вторая - здесь
echo 'Error';
} else {
echo "success";
}
так что комментируйте строку с первым вызовом $mail->send() - и будет Вам счастье)