php - 使用 php 向用户注册发送电子邮件

标签 php mysql email-validation

我正在使用 MySQL 构建注册表单来存储数据并完美运行。当用户注册时,将发送一封验证电子邮件以激活用户帐户。问题不是发送给电子邮件用户的验证邮件,而是用户数据和激活码可以进入 mysql。

这里是 insert.php

的代码
<?php
    //panggil file config.php untuk menghubung ke server
    include('config.php');

    //tangkap data dari form
    $nama = $_POST['nama'];
    $username = mysql_real_escape_string($_POST['username']);
    $email = mysql_real_escape_string($_POST['email']);
    $alamat = $_POST['alamat'];
    $telp = $_POST['telp'];
    $password = mysql_real_escape_string($_POST['password']);

    // regular expression for email check
    $regex = '/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/';
    if(preg_match($regex, $email))
    { 
        $password=md5($password); // encrypted password
        $activation=md5($email.time()); // encrypted email+timestamp
        $count=mysql_query("SELECT id_user FROM user WHERE email='$email'");
        // email check
        if(mysql_num_rows($count) < 1)
        {
            $query = mysql_query("insert into user (nama,email,telp,password,alamat,username,activation) VALUES('$nama', '$email', '$telp', '$password', '$alamat', '$username', '$activation')") or die(mysql_error());
            if ($query) 
            {
                header('location:index.php');
            }
            // sending email
            include ('sendEmail.php');

            $to=$email;
            $subject="Email verification";
            $body='Hi, <br/> <br/> Silakan verifikasi dengan klik link di bawah ini. <br/> <br/> <a href="http://localhost/LAPAN-Project/verify.php?code=' . $activation . '">Verifikasi</a>';

            sendEmail($to,$subject,$body);
            $msg= "Registration successful, please activate email."; 
        }
        else
        {
            $msg= 'The email is already taken, please try new.'; 
        }
    }
    else
    {
        $msg = 'The email you have entered is invalid, please try again.'; 
    }
    // HTML Part
//}
?>

这里是代码 sendEmail.php

<?php
function sendEmail($to,$subject,$body)
{
    require ('class.phpmailer.php');
    $from       = "me@kumistebal.web.id";
    $mail       = new PHPMailer();
    $mail->IsSMTP(true);            // use SMTP
    $mail->IsHTML(true);
    $mail->SMTPAuth   = true;                  // enable SMTP authentication
    $mail->Host       = "ssl://smtp.gmail.com"; // SMTP host
    $mail->Port       =  465;                    // set the SMTP port
    $mail->Username   = "*********@gmail.com";  // SMTP  username
    $mail->Password   = "*********";  // SMTP password
    $mail->SetFrom($from, 'From Name');
    $mail->AddReplyTo($from,'From Name');
    $mail->Subject    = $subject;
    $mail->MsgHTML($body);
    $address = $to;
    $mail->AddAddress($email, $to);

    if(!$mail->Send())
        echo "Mailer Error: " . $mail->ErrorInfo;
    else
        echo "Message has been sent";
}    

?>

有人知道怎么做吗?

最佳答案

代替 $mail->Host = "ssl://smtp.gmail.com";//SMTP 主机

只是使用

$mail->Host = "smtp.gmail.com";//SMTP 主机

关于php - 使用 php 向用户注册发送电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32001986/

相关文章:

ruby - 在大数据流中查找电子邮件地址

django - 更改用户电子邮件地址

php - 如何使用 php 将 &lt;textarea&gt; 中的段落存储在 mysql 中

javascript - Wordpress 在 ajax 请求回调中获取当前页面名称或 ID

MySQL信号重复键错误

php - 无法在 Yii 的连接表中插入记录

php - 使用 PHP 更新外键值

php - AWS S3、速度和服务器负载

mysql - 如何在 MySQL 中使用 GROUP_CONCAT 显示整列值

javascript - 电子邮件正则表达式验证 javascript