PHPMailer возвращает true даже при отправке на поддельный адрес

Мне нужно знать, если PHPMailer не смог отправить электронное письмо. Но даже отправка на поддельный адрес электронной почты возвращается true:

$phpmailer = new PHPMailer( true );
$phpmailer->setFrom( "myemail@myemailladdy.com", "myemail@myemailladdy.com" );

//This is definitely not reachable
$phpmailer->addAddress( "fake@shdsabdasdiuahsdiuhaiduhasidsjdfake.com", "IJustPressedRandomKeys" );

$phpmailer->Subject = "fake";
$phpmailer->Body = "fake";
echo "Is Mail: " . $phpmailer->IsMail();

//This prints "1"echo "Was Sent: " . $phpmailer->send();

Почему это возвращает 1 / правда?

(Когда письмо действительно, я получаю письма, поэтому PHPMailer настроен правильно)

1

Решение

PHPMailer не знает, является ли адрес электронной почты реальным или нет. Почтовый сервер не узнает, пока не отправит электронное письмо и не получит ответ об отклонении. Но передача обслуживания между сервером и PHP к этому моменту уже была прекращена.

Нет реального способа проверить, существует ли адрес электронной почты, не отправив ему электронное письмо и не получив ответ или не введя уникальный маркер в веб-форму. Самое близкое, что вы можете получить, — это проверить записи MX или другую информацию DNS, которая подтверждает, что домен существует, и т. Д. Но это будет не быть идеальным и иметь ложные срабатывания, а также пропуск поддельных писем, если домен действителен.

5

Другие решения

Я немного подумал об этом … и думаю, у меня есть хорошее решение.

Если будут какие-то большие неприятности

if(!$mail->Send()) {
echo $mail->ErrorInfo; // this is important for you
// other functions...
}

или если будет успех?

else {
$smtp_msg = 'ALL OK'; // sets the message you want to see
if ($mail->ErrorInfo != '') { // check if there wos any other error
$smtp_msg = $mail->ErrorInfo; // if yes - show it to me
}
// else is optional but no need couse if there wos no error we already set $smtp_msg = 'ALL OK';
return $smtp_msg;
}

Или даже лучше, вы можете попытаться использовать коды ошибок, чтобы показать свои собственные сообщения …

Или … используйте try / catch, как здесь:
Обработка ошибок с PHPMailer

Это может быть полезно!

-1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector