No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Curso de PHP: Integraci贸n con HTML

Curso de PHP: Integraci贸n con HTML

Carlos Eduardo G贸mez Garc铆a

Carlos Eduardo G贸mez Garc铆a

Implementando el servidor de correos de Gmail

23/24
Recursos

Aportes 7

Preguntas 10

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Hola!
A quienes no les llegue el mail a Gmail agreguen 鈥渦se PHPMailer\PHPMailer\SMTP;鈥 abajo de 鈥渦se PHPMailer\PHPMailer\PHPMailer;鈥 en su archivo mail.php 馃槂

Les dejo el repo para que lo consulten:
https://github.com/PHPMailer/PHPMailer

Algunos Comentarios

Algo que me gener贸 confusi贸n fue la forma en la que est谩 implementada la l贸gica de env铆o de correos. Si se supone que es un formulario de contacto, el usuario espera que su mensaje llegue a la empresa, el equipo de contacto de la app, soporte, etc. Sin embargo, en la implementaci贸n lo que sucede es que el usuario recibe en su bandeja el mismo mensaje que envi贸 a trav茅s del form.
Vemos esto cuando a Retax le llega el correo a su bandeja personal, es decir, la direcci贸n que 茅l ingres贸 cuando llen贸 el formulario.
Los correos se env铆an desde la direcci贸n que indicamos en phpmailer->Username.
Me cost贸 un rato entender esto y supongo que el objetivo de la clase es mostrar un ejemplo donde se utiliza PHPMailer, pero en este ejemplo me parece que los correos deber铆an ir en la direcci贸n contraria.

Ejemplo Hipot茅tico

  • El usuario es Mr. Michi y su correo es [email protected]
  • Nuestra app tiene una direcci贸n de correo 鈥渋ntermediaria鈥 llamada [email protected]. Esta es la direccion desde donde se env铆an los correos, por lo tanto es la que se configura con phpmailer->Username y phpmailer->Password. Esta direcci贸n de correo lee la informaci贸n del form, y la env铆a al correo del equipo de soporte de la app. Por eso llamo a esta cuenta 鈥渋ntermediaria鈥, pues su funci贸n es tomar el mensaje del usuario y pasarlo a soporte.
  • El equipo de soporte de nuestra app recibe el correo enviado desde [email protected] con la informaci贸n que escribi贸 del usuario: su nombre, correo, y el mensaje.
  • Por 煤ltimo, el equipo de soporte env铆a una respuesta al correo ingresado por el usuario, dando soluci贸n a su duda o pregunta.

Consideraciones importantes

  1. En el $body del email que enviar铆a la cuenta intermediaria contac-center deber铆a incluir toda la informaci贸n del usuario: nombre, correo y mensaje, pues supongo que si no se incluye el correo, no habr谩 forma de que el usuario reciba una respuesta, pues al equipo de soporte no le estar铆a llegando esta direcci贸n de respuesta.
  2. La cuenta 鈥渋ntermediaria鈥 podr铆a incluso ser la misma de soporte, enviando un mensaje a s铆 mismo con la informaci贸n del usuario. Recordemos que la cuenta 鈥渋ntermediaria鈥 debe tomar la informaci贸n del form y enviarla. (Hay un comentario m谩s antiguo que menciona que le funcion贸 cuando ingres贸 la misma cuenta de destino, as铆 que esta ser铆a la explicaci贸n de por qu茅 funcion贸 as铆).
  3. Este es s贸lo un ejemplo de implementaci贸n que se me vino a la mente, no tengo conocimiento t茅cnico acerca del tema, no se si esta es la forma en la que se implementan en las empresas. S贸lo estoy compartiendo la idea de lo que entend铆 del funcionamiento de esta herramienta. Por supuesto se aceptan comentarios de feedback y correcciones si hay algo en lo que puedo estar equivocado.

隆Ahora a seguir practicando y nunca para de aprender! 馃挌

驴Estas viendo este comentario?
Lo hemos logrado!!!
Muchas felicidades por haber logrado terminar el proyecto 馃槑
Hubo dificultades en el proceso pero nos llevamos un gran aprendizaje a lo largo de este maravilloso curso que nos comparti贸 el buen Retax 馃槃
Me voy super contento con todo lo aprendido.
.
Les comparto mi repo donde podr谩n encontrar todo el c贸digo 馃槂

.
Me llego el correo de Gmail!!!

No estaba recibiendo el correo, pero al poner en el formulario el correo a donde voy a recibir mi correo ya me llego, es decir asi:

No me lleg贸 el mail 馃槮 pongo todo y me sale el mensajito de Mensaje enviado pero no sale en mi bandeja 馃槙

Por si acaso no pon铆an pus su correo gmail hice lo siguiente XD

index.php

if(sendMail($subject, $body, $email, $name, true)) {
                $status = "succes";
            } else {
                $status = "danger";
            }

mail.php

function sendMail($subject, $body, $email, $name, $html = false) {
        try {
            # Configuraci贸n inicial de nuestro servidor de correos
            $correo = substr($email, strpos($email, '@') + 1);

            if($correo != "gmail.com") {
                return false;
            }

            $phpmailer = new PHPMailer();
            $phpmailer->isSMTP();
            
            # Intento de aceptar cualquier tipo de corre, pero se tienen que hacer cosas m谩s complicadas bro :'c
            // if(substr($correo, strpos($correo, '.')) == '.edu.mx')
            //     $phpmailer->Host = 'smtp.gmail.com';
            // else
            //     $phpmailer->Host = 'smtp.' . $correo;

            $phpmailer->Host = 'smtp.gmail.com';    #Host del gmail
            $phpmailer->SMTPAuth = true;
            $phpmailer->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; #Habilitan la encriptaci贸n para que todos los datos viajen seguros
            $phpmailer->Port = 465; # Puerto que tiene seguiridad al enviar correos
            $phpmailer->Username = '[email protected]'; #Tu Gmail
            $phpmailer->Password = 'becbikrnrsrpytim';
    
            // A帽adiendo destinatarios
            $phpmailer->setFrom('[email protected]', 'Mark Zuckerberg'); #Quien lo env铆a
            $phpmailer->addAddress($email, $name);  #Quien lo recibe
    
            // Definiendo el contenido de mi email
            $phpmailer->isHTML($html);              //Set email format to HTML
            $phpmailer->Subject = $subject;
            $phpmailer->Body    = $body;
    
            // Mandar el correo
            $phpmailer->send();
        } catch (Exception $ex) {
            return false;
        }
    }

As铆 si retorna falso pus le digo que pas贸 un error XD

Supongo que las credenciales usadas en el mail.php se deben 鈥渙cultar鈥 mediante variables de entorno, como se hace en JS. Me imagino que vendr谩 m谩s adelante en otros cursos.

Saludos.