PHPMailer не отправляет почту даже после включения SMTP. php - PullRequest
0 голосов
/ 17 июня 2020

По какой-то странной причине моя PHP система входа в систему, которая отправляет электронное письмо с подтверждением для активации вашей учетной записи, но ничего не отправляет.

<?php
$error = NULL;
require "phpmailer/class.phpmailer.php";
require "phpmailer/class.smtp.php";
require "phpmailer/PHPMailerAutoload.php";



if(isset($_POST['submit'])) {

    //Form Data GET
    $u = $_POST['u'];
    $p = $_POST['p'];
    $p2 = $_POST['p2'];
    $e = $_POST['e'];

    //Throw Username too short error
    if(strlen($u) < 5){
        $error = "(!) Your username must be at least 5 characters.";
    }elseif($p2 != $p) {
    //Throw password pair error.
        $error .= "(!) Your passwords do not match :/";
    }else{
        //200 [OK]

        //Establish Connection to Database
        $mysqli = NEW MySQLi('localhost','root','','test');
        //Convert special chars.
        $u = $mysqli->real_escape_string($u);
        $p = $mysqli->real_escape_string($p);
        $p2 = $mysqli->real_escape_string($p2);
        $e = $mysqli->real_escape_string($e);

        //Generate Verification Key
        $vkey = md5(time().$u);

        //Insert account into database
        $p = md5($p);
        $insert = $mysqli->query("INSERT INTO accounts(username,password,email,vkey)
            VALUES('$u','$p','$e','$vkey')");

        if($insert){
            //Start PHPMailer
            $mail = new PHPMailer(true);
            $mail->IsSMTP(); // telling the class to use SMTP
            $mail->SMTPDebug = 0;   //No Debug. Set to 3 for verbose logging.
            $mail->SMTPAuth = true; // enable SMTP authentication
            $mail->SMTPSecure = "ssl"; //Set to SSL to pass checks.
            $mail->Host = "smtp.mail.com"; //Set to mail.com server, it has ssl, smtp, and it's free. If you'd like to use gmail, use smtp.gmail.com
            $mail->Port = 465;  //SSL/TLS Port for mail.com and gmail.com

            //FILL WITH YOUR DETAILS
            $mail->Username = 'example@mail.com';
            $mail->Password = 'example';

            //DON'T SET TO SENDER ADDRESS WILL FAIL SPF CHECKS!!!
            $mail->SetFrom('example@mail.com', 'example');
            $mail->AddAddress($e);

            //Send the email.
            $mail->Subject = trim("Email Verifcation");
            $mail->isHTML(true);

            //The Message
            $mail->Body = '<h1>Hi, ' . $u . '!</h1><br><p><a href="https://localhost' . $vkey . '">Activate</a><br><p>Alternatively copy and paste this link in your browser: <br> <b>Https://localhost' . $vkey . '';

            echo "<center><div class='alert success'><strong>Successfully Registered!</strong> Please check your email.</div></center>";


        }
        //OOPS! Throw $error.
            echo $mysqli->error;

    }


}


?>

Сначала мне нужны файлы в моем PHPMailer папка, затем я запускаю PHPMailer

Это меня утомляет. Определите проблему. Было бы здорово, если бы кто-нибудь знал решение или намек на то, почему оно не работает. Спасибо. HTML в том же файле

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title></title>
    <style>
.alert {
  padding: 20px;
  background-color: #f44336;
  color: white;
  opacity: 1;
  transition: opacity 0.6s;
  margin-bottom: 15px;
  font-family: Sans-Serif;
  border-radius: 15px;
}

.alert.success {background-color: #4CAF50;}
.alert.info {background-color: #2196F3;}
.alert.warning {background-color: #ff9800;}

.closebtn {
  margin-left: 15px;
  color: white;
  font-weight: bold;
  float: right;
  font-size: 22px;
  line-height: 20px;
  cursor: pointer;
  transition: 0.3s;
}

.closebtn:hover {
  color: black;
}
</style>
</head>
<body>
    <form method="POST" action="">
    <table border="0" align="center" cellpadding="5">
    <tr>
    <td align="right">Username:</td>
    <td><input type="TEXT" name="u" required/></td>
    </tr>
    <tr>
    <td align="right">Password</td>
    <td><input type="PASSWORD" name="p" required/></td>
    </tr>
    <tr>
    <td align="right">Repeat Password</td>
    <td><input type="PASSWORD" name="p2" required/></td>
    </tr>
    <tr>
    <td align="right">Email Address</td>
    <td><input type="EMAIL" name="e" required/></td>
    </tr>
    <td colspan="2" align="center"><input type="SUBMIT" name="submit" value="Register" required/></td>
    </table>
    </form>   
    <center>
    <?php 
    echo $error ;
    ?>
    </center>  
</body>
</html>

1 Ответ

0 голосов
/ 18 июня 2020

вы, вероятно, можете попробовать это, у меня тоже была ошибка, поэтому мне пришлось добавить эту строку перед хостом

$mail->SMTPOptions=array('ssl'=>array('verify_peer'=>false,'verify_peer_name'=>false,'allow_self_signed'=>false));

, но если это не сработает, вы можете попробовать устранить проблемы, например,

if($mail->Send()){ 



}else{ 

var_dump($mail);
die();

} 

так что, как только вы получите журналы ошибок, вы, вероятно, сможете использовать Google или вставить журнал ошибок, и, возможно, мы сможем помочь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...