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() - и будет Вам счастье)

→ Ссылка