密码恢复不发送电子邮件

时间:2015-11-16 11:33:51

标签: php email passwords

密码恢复不发送电子邮件。但它总是说发送了电子邮件。请帮帮我。

<?php
session_start();
include_once 'dbconnect.php';

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

    $email = $_POST['email'];
    $query = mysql_query("SELECT * FROM users WHERE email='" . $email . "' ") or die(mysql_error());
    $run = mysql_affected_rows();
    $password = substr(hash('sha512', uniqid(rand(), 1)), 3, 10);
    $pass = hash('sha512', $password);
    if ($run != 0) {
        $res = mysql_fetch_array($query);
        $to = "$email";
        $subject = "Obnovení hesla";
        $body = "Dobrý den $res->username, vaše nové heslo je $password";
        $additionalheader = "From: <admin@chat-web.com>";
        mail($to, $subject, $body, $additionalheader);
        if ($email) {

            echo"<script>alert('Email byl úspěšně odeslán.')</script>";

        } else {

            echo"<script>alert('Emailová adresa $email neexistuje.')</script>";
        }
    }
    $sql = mysql_query("UPDATE users SET password='$pass' WHERE email = '$email'")or die(mysql_error());
}
?>

3 个答案:

答案 0 :(得分:0)

邮件功能是否在您的服务器上运行?

同时检查您的垃圾邮件文件夹。

正如Jon Stirling所说,替换

$ run = mysql_affected_rows();

wtih

$ run = mysql_num_rows($ query);

答案 1 :(得分:0)

您使用了错误的函数来检查是否有任何返回的行。

mysql_affected_rows()返回受INSERT / UPDATE / DELETE影响的行数。

mysql_num_rows()将返回查询返回的行数,这是您实际想要检查的内容。

答案 2 :(得分:0)

要正确检查回复,请尝试以下代码:

if(mail($to, $subject, $body, $additionalheader)) {
    echo "mail sent";
}
else {
    echo "mail not sent";
}

您还可以打印$ res的响应以了解确切的错误。 另外,请阅读以下帖子。 How to test if PHP mail() has successfully delivered mail