невозможно отправить токен и значение электронной почты по почте с помощью phpmailer из-за забытого пароля - PullRequest
0 голосов
/ 04 февраля 2019

Я хочу отправить значение $ email и $ token вместе с письмом отправителю, но оно не отправляет его.Это ссылка, которую я получаю в своем электронном письме:

http://localhost/admin-dashboard/resetPassword.php?email=$femail&token=$token

Здесь не отображаются значения $ token и $ femail.Может кто-нибудь помочь ??

$token = "qwertyuiopasdfghjklzxcvbnm1234567890jksdhfljdhfajlsdbhkfdajsfhaljsdfhb";
                    $token = str_shuffle($token);
                    $token = substr($token, 0,10);
//                  $femail = '';

                    $stmt_i = $conn->prepare("UPDATE users SET token=?, tokenExpire=DATE_ADD(NOW(), INTERVAL 5 MINUTE) WHERE email=?");
                    $stmt_i->bind_param("ss", $token, $femail);
                    $stmt_i->execute();
                    $result = $stmt_i->affected_rows;
//                    echo $result;



                    //Load Composer's autoloader
                    // require '.../vendor/autoload.php';

                    require '../PHPMailer/src/PHPMailer.php';
                    require '../PHPMailer/src/Exception.php';

                    require '../PHPMailer/src/SMTP.php';

                    $mail = new PHPMailer(true);
//                  echo $femail.$token;
                    try {
                        //Server settings
//                      $mail->SMTPDebug = 2;
                        $mail->isSMTP();                                      
                        $mail->Host = ' smtp.gmail.com';
                        $mail->SMTPAuth = true;

                        $mail->Username = 'myusername';
                        $mail->Password = 'mypassword';

                        $mail->Port = 587; 
                        $mail->SMTPSecure = 'tls';
                        //Recipients
                        $mail->setFrom('email', 'name');
                        $mail->addAddress($femail);     // Add a recipient

                        //Content
                        $mail->isHTML(true);
                        $mail->Subject = 'Reset Password';`enter code here`                     $mail->Body    = '<h3>Click the link to reset your password</h3><br><a href= "http://localhost/admin-dashboard/resetPassword.php?email=$femail&token=$token">http://localhost/admin-dashboard/resetPassword.php?email=$femail&token=$token</a><br><h3>Regards<br>Moon</h3>';

//                      $mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

                        $mail->send();
                        echo 'Message has been sent';
                    } catch (Exception $e) {
                        echo 'Message could not be sent. Mailer Error: ', $mail->ErrorInfo;
                    }

1 Ответ

0 голосов
/ 04 февраля 2019

Помимо того, что вы закомментировали строку, которая выполняет работу, вы используете неверный тип кавычек - одинарные кавычки не поддерживают интерполяцию переменных .Чтобы избежать столкновения типов кавычек в строке (например, когда вы цитируете атрибуты), либо используйте одинарные кавычки, либо избегайте двойных кавычек:

$mail->Body = "<h3>Click the link to reset your password</h3><br><a href= 'http://localhost/admin-dashboard/resetPassword.php?email=$femail&token=$token'>http://localhost/admin-dashboard/resetPassword.php?email=$femail&token=$token</a><br><h3>Regards<br>Moon</h3>";

или:

$mail->Body = "<h3>Click the link to reset your password</h3><br><a href= \"http://localhost/admin-dashboard/resetPassword.php?email=$femail&token=$token\">http://localhost/admin-dashboard/resetPassword.php?email=$femail&token=$token</a><br><h3>Regards<br>Moon</h3>";

Обратите внимание, чтоиспользование localhost в качестве имени хоста в этих URL-адресах не сработает ни для кого, кроме вас - вам нужно настоящее имя хоста, и вы должны использовать TLS (т.е. https URL-адреса).

Также,удалить начальный пробел из имени хоста электронной почты:

$mail->Host = 'smtp.gmail.com';
...