Underc0de

Foros Generales => Dudas y pedidos generales => Mensaje iniciado por: Fher en Abril 24, 2019, 12:03:21 AM

Título: PROBLEMA Envio de email de confirmacion utilizando composer y PHPMAILER
Publicado por: Fher en Abril 24, 2019, 12:03:21 AM
Buenas ,  bueno mi problema es al enviar correos con la libreria con PHPmailer el codigo me dice que ya envio en codigo de confirmacion para activar la cuenta ,guarda el registro en la base de datos pero la confirmacion del login para activar el perfil  no llega al correo del destinatario aqui les comparto el codigo

registrar.php

<?php
   require "send_email.php";
   $_SESSION['nombre']  = $_POST['nombre'];
   $_SESSION['apellido'] = $_POST['apellido'];
   $_SESSION['email'] = $_POST['email'];

   $nombre = $mysqli->escape_string($_POST['nombre']);
   $apellido = $mysqli->escape_string($_POST['apellido']);
   $email = $mysqli->escape_string($_POST['email']);
   $password = $mysqli->escape_string(password_hash($_POST['password'], PASSWORD_BCRYPT)); // $2y$
   $hash = $mysqli->escape_string(md5(rand(0, 1000)));

   $result = $mysqli->query("SELECT * FROM usuarios WHERE email = '$email'") or die($mysqli->error());

   if($result->num_rows > 0){
      $_SESSION['message'] = "Usuario con este correo ya existe!";
      header("Location: error.php");
      exit();
   }else{
      $sql = "INSERT INTO usuarios(nombre, apellido, email, password, hash)"
      . "VALUES('$nombre', '$apellido', '$email', '$password', '$hash')";

      if($mysqli->query($sql)){
         $_SESSION['logged_in'] = true;

         $para_usuario = $email;
         $subject = 'Verifica tu cuenta';
         $message_body = '
         Hola '.$nombre.',
         Gracias por registrarte!
         Por favor confirma tu cuenta haciendo click en este link:
         
         http://localhost/login/verificar.php?email='.$email.'&hash='.$hash;
         sendEmail($para_usuario, $subject, $message_body);

         header('Location: perfil.php');   
         exit();

      }else{
         $_SESSION['message'] = 'Ocurrió un error!';
         header("Location: error.php");
         exit();
      }
   }
?>

send_mail.php

<?php

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

//Load Composer's autoloader
require 'vendor/autoload.php';
require 'vendor/phpmailer/phpmailer/src/Exception.php';
require 'vendor/phpmailer/phpmailer/src/PHPMailer.php';
require 'vendor/phpmailer/phpmailer/src/SMTP.php';

function sendEmail(){

    $mail = new PHPMailer(true);                              // Passing `true` enables exceptions
    try {
    $mail->SMTPDebug=2;   
    $mail->isSMTP();                                      // Set mailer to use SMTP
    $mail->Host = 'smtp.gmail.com';  // Specify main and backup SMTP servers
    $mail->SMTPAuth = true;                               // Enable SMTP authentication
    $mail->Username = '[email protected]';                 // SMTP username
    $mail->Password = 'mipass';                           // SMTP password
    $mail->SMTPSecure = 'tls';                            // Enable TLS encryption, `ssl` also accepted
    $mail->Port = 587;                                    // TCP port to connect to

    //Recipients
    $mail->setFrom('[email protected]');
    $mail->addAddress('$para_usuario');

    $mail->isHTML(true);                                  // Set email format to HTML
    $mail->Subject = '$subject';
    $mail->Body    = '$message_body';

    $mail->send();
    echo 'Mensaje fue enviado';
    } catch (Exception $e) {
       echo 'Mensaje no puedo ser enviado. Mailer Error: ', $mail->ErrorInfo;
    }
}

?>