I'm making an OTP verification mail for my registration form, and I'm using phpmailer to send a verification email to Gmail. but unfortunately, it won't send. I watched a tutorial about making an OTP verification form using phpmailer, still it wont work
here are my codes for the registration form.
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
session_start();
if (isset($_SESSION['SESSION_EMAIL'])) {
header("Location: welcome.php");
die();
}
//Load Composer's autoloader
require 'vendor/autoload.php';
include 'config.php';
$msg = "";
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 = "<div class='alert alert-danger'>{$email} - This email address has been already exists.</div>";
} 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 "<div style='display: none;'>";
//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 = "tls://smtp.gmail.com"; //Set the SMTP server to send through
$mail->SMTPAuth = true; //Enable SMTP authentication
$mail->Username = 'tk23@gmail.com'; //SMTP username
$mail->Password = '12345678'; //SMTP password
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; //Enable implicit TLS encryption
$mail->Port = 587; //TCP port to connect to; use 587 if you have set `SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS`
//Recipients
$mail->setFrom('tk23@gmail.com','Mailer');
$mail->addAddress($email);
//Content
$mail->isHTML(true);
$mail->Subject = 'no reply';
$mail->Body = 'Here is the verification link <b><a href="http://localhost/login/?verification='.$code.'">http://localhost/login/?verification='.$code.'</a></b>';
$mail->send();
echo 'Message has been sent';
} catch (Exception $e) {
echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}
echo "</div>";
$msg = "<div class='alert alert-info'>We've send a verification link on your email address.</div>";
} else {
$msg = "<div class='alert alert-danger'>Something wrong went.</div>";
}
} else {
$msg = "<div class='alert alert-danger'>Password and Confirm Password do not match</div>";
}
}
}
?>
<!DOCTYPE html>
<html lang="zxx">
<head>
<title>Login Form - Brave Coder</title>
<!-- Meta tag Keywords -->
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta charset="UTF-8" />
<meta name="keywords"
content="Login Form" />
<!-- //Meta tag Keywords -->
<link href="//fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600&display=swap" rel="stylesheet">
<!--/Style-CSS -->
<link rel="stylesheet" href="css/otp.css" type="text/css" media="all" />
<!--//Style-CSS -->
<script src="https://kit.fontawesome.com/af562a2a63.js" crossorigin="anonymous"></script>
</head>
<body>
<!-- form section start -->
<section class="w3l-mockup-form">
<div class="container">
<!-- /form -->
<div class="workinghny-form-grid">
<div class="main-mockup">
<div class="alert-close">
<span class="fa fa-close"></span>
</div>
<div class="w3l_form align-self">
<div class="left_grid_info">
<img src="images/image2.svg" alt="">
</div>
</div>
<div class="content-wthree">
<h2>Register Now</h2>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. </p>
<?php echo $msg; ?>
<form action="" method="post">
<input type="text" class="name" name="name" placeholder="Enter Your Name" value="<?php if (isset($_POST['submit'])) { echo $name; } ?>" required>
<input type="email" class="email" name="email" placeholder="Enter Your Email" value="<?php if (isset($_POST['submit'])) { echo $email; } ?>" required>
<input type="password" class="password" name="password" placeholder="Enter Your Password" required>
<input type="password" class="confirm-password" name="confirm-password" placeholder="Enter Your Confirm Password" required>
<button name="submit" class="btn" type="submit">Register</button>
</form>
<div class="social-icons">
<p>Have an account! <a href="guest_login.php">Login</a>.</p>
</div>
</div>
</div>
</div>
<!-- //form -->
</div>
</section>
<!-- //form section start -->
<script src="js/jquery.min.js"></script>
<script>
$(document).ready(function (c) {
$('.alert-close').on('click', function (c) {
$('.main-mockup').fadeOut('slow', function (c) {
$('.main-mockup').remove();
});
});
});
</script>
</body>
</html>
Somebody told me to replace my port and host to TLS 587, still it wont work. can anybody help me with this problem? thanks.