PHP

PHPMailer не приходят письма на почту.

Взял код в гитхабе, подключил google почту, но письмо не приходит, в чем может быть проблема?

 if (isset($_POST['submit'])) { 
$name = mysqli_real_escape_string($conn, $_POST['name']);
$email = mysqli_real_escape_string($conn, $_POST['email']);
$password = mysqli_real_escape_string($conn, md5($_POST['password']));
$confirm_password = mysqli_real_escape_string($conn, md5($_POST['confirm-password']));
$code = mysqli_real_escape_string($conn, md5(rand()));

if (mysqli_num_rows(mysqli_query($conn, "SELECT * FROM users WHERE email='{$email}'")) > 0) {
$msg = "{$email} - This email address has been already exists.";
} else {
if ($password === $confirm_password) {
$sql = "INSERT INTO users (name, email, password, code) VALUES ('{$name}', '{$email}', '{$password}', '{$code}')";
$result = mysqli_query($conn, $sql);

if ($result) {
echo "";
//Create an instance; passing `true` enables exceptions
$mail = new PHPMailer(true);

try {
//Server settings
$mail->SMTPDebug = SMTP::DEBUG_SERVER; //Enable verbose debug output
$mail->isSMTP(); //Send using SMTP
$mail->Host = 'smtp.gmail.com';
$mail->SMTPAuth = true;
$mail->Username = '*';
$mail->Password = '*';
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
$mail->Port = 587;
//TCP port to connect to; use 587 if you have set `SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS`

//Recipients
$mail->setFrom('*');
$mail->addAddress($email);

//Content
$mail->isHTML(true); //Set email format to HTML
$mail->Subject = 'no reply';
$mail->Body = 'Here is the verification link http://localhost/login/?verification='.$code.'';

$mail->send();
echo 'Ваше письмо отправлено';

} catch (Exception $e) {
echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}
echo "";
$msg = "We've send a verification link on your email address.";
} else {
$msg = "Something wrong went.";
}
} else {
$msg = "Password and Confirm Password do not match";
}
}
}
Mark Haytbayew
Mark Haytbayew
1 552
  1. если не правильно указать хост логин пароль и порт то работать не будет ничего вобще
  2. если указал правильно но все равно не отправляет - надо еще в гугле разрешить отправку
  3. если настроил предыдущие пункты и таки письмо ушло но к адреату не дошло значит попало в спам
  4. если обошел спам фильтры и начал часто отправлять то опять заблочат
ДИ
Дмитрий И Карина
59 846
Лучший ответ
Нужно смотреть какой код ошибки возвращает
Вадим Евсюков
Вадим Евсюков
5 183
Неправильные учетные данные SMTP: Убедитесь, что вы правильно указали хост, порт, имя пользователя и пароль для подключения к серверу SMTP. Учетные данные должны быть действующими и соответствовать настройкам вашей почты.

Блокировка порта: Некоторые хостинг-провайдеры или интернет-провайдеры могут блокировать порты, которые используются для отправки почты, такие как порт 587, который обычно используется для SMTP. Убедитесь, что порт, указанный в вашем коде, не заблокирован и разрешен для отправки почты.

Ограничения безопасности: Ваш сервер хостинга или почтовый сервер может иметь ограничения безопасности, такие как SPF (Sender Policy Framework) или DKIM (DomainKeys Identified Mail), которые могут блокировать отправку писем. Убедитесь, что ваш сервер соответствует требованиям безопасности и настроен правильно.

Фильтры спама: Письмо может быть отфильтровано как спам почтовыми серверами получателя. Проверьте папку "Спам" в почтовом ящике получателя и убедитесь, что письмо не было ошибочно отфильтровано.

Ошибки в коде: Проверьте ваш код на наличие ошибок, опечаток или неправильных настроек. Убедитесь, что вы используете правильные настройки и методы отправки письма в соответствии с требованиями почтового сервера.

Если вы проверили все вышеуказанные аспекты и письмо по-прежнему не приходит, рекомендуется проверить журналы ошибок (error logs) на сервере, чтобы выявить возможные ошибки и решить проблему.
Sergo Tchakhnakia
Sergo Tchakhnakia
1 635
Mark Haytbayew Обобщенная инструкция, все проверил, данные указанны правильно, все требуемые дополнения установлены, сайт стоит на локально сервере xampp, но все-равно письма не приходят.