将数据发送到另一个PHP文件以使用电子邮件中的数据

时间:2015-10-15 08:14:26

标签: php html email

我正在尝试将数据从一个PHP文件发送到另一个PHP文件以回显用户输入的数据。然后,该数据(email和email_code)将用于URL以验证用户的电子邮件地址。

我的代码如下。

如果所有验证都通过,将运行以下代码:

$user = new User();

$user->sendEmail();

Session::flash('home', 'Uw account is voltooid en u kunt nu <a href="inloggen">inloggen</a>!');
Redirect::to('index');

在我的User类中,运行以下函数(sendEmail()):

public function sendEmail() {
        include_once "mailer/class.phpmailer.php"; // include the class name

        ob_start();                      // start capturing output
        include('mailer/mail.php');             // execute the file
        $content = ob_get_contents();    // get the contents from the buffer

        $email = "";
        $mail = new PHPMailer(); // create a new object
        $mail->IsSMTP(); // enable SMTP
        $mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only
        $mail->SMTPAuth = true; // authentication enabled
        $mail->SMTPSecure = 'ssl'; // secure transfer enabled REQUIRED for GMail
        $mail->Host = "smtp.gmail.com";
        $mail->Port = 465; // or 587
        $mail->IsHTML(true);
        $mail->Username = "";
        $mail->Password = "";
        $mail->SetFrom("");
        $mail->Subject = "";
        $mail->Body = $content;
        $mail->AddAddress($email);
        $send = $mail->Send(); //Send the mails
        if($send){
            echo '<center><h3 style="color:#009933;">Mail sent successfully</h3></center>';
        }
        else{
            echo '<center><h3 style="color:#FF3300;">Mail error: </h3></center>'.$mail->ErrorInfo;
        }
        ob_end_clean();
    }

注意:我删除了一些隐私信息。

电子邮件正文是一个PHP文件,其中包含验证电子邮件的网址。

<a href="https://myurl.me/activate?email=<?php echo $email; ?>&email_code=<?php echo $email_code; ?>"  target="_blank">Verify</a>

我尝试通过网址将变量发送到mail.php文件,以便$email$email_code可以正常工作,但在我的情况下,这是很多代码更改,这会导致更多错误。

所以,现在我正在寻找一种更简单的方法,或者将这些变量从我的注册表单传递到mail.php文件的一些提示。

任何提示或建议都非常感谢!

谢谢!

1 个答案:

答案 0 :(得分:0)

您的问题是,您从未在$email方法中声明$email_codesendEmail()

我不知道你的商店在哪里发信息,所以这里有两个选择。

首先,它是唯一要传递给sendEmail()方法

的变量
$email = $_POST['email'];
$email_code = $_POST['email_code'];
$user->sendEmail($email, $email_code);

public function sendEmail($email, $email_code) {
    include_once "mailer/class.phpmailer.php"; // include the class name

    ob_start();                      // start capturing output
    include('mailer/mail.php');             // execute the file
    $content = ob_get_contents();    // get the contents from the buffer
    (...)
}

第二个解决方案,这些变量包含在User对象中(在我看来是最好的一个)

public function sendEmail() {
    include_once "mailer/class.phpmailer.php"; // include the class name

    ob_start();                      // start capturing output
    $email = $this->email;
    $email_code = $this->email_code;
    include('mailer/mail.php');             // execute the file
    $content = ob_get_contents();    // get the contents from the buffer
    (...)
}