CursosEmpresasBlogLiveConfPrecios

Implementando el servidor de correos de Gmail

Clase 23 de 24 • Curso de PHP: Integración con HTML

Clase anteriorSiguiente clase

Contenido del curso

Introducción
  • 1
    ¿Cómo se renderiza una página web en mi computadora?

    ¿Cómo se renderiza una página web en mi computadora?

    08:20
  • 2
    Levantando un servidor local

    Levantando un servidor local

    09:59
¿Cómo combinar HTML con PHP?
  • 3
    PHP como preprocesador de HTML

    PHP como preprocesador de HTML

    08:43
  • 4
    Imprime texto y etiquetas HTML

    Imprime texto y etiquetas HTML

    07:00
  • 5
    Condicionales

    Condicionales

    11:43
  • 6
    Ciclos

    Ciclos

    09:41
  • 7
    ¿Cómo pasar variables de PHP a JavaScript?

    ¿Cómo pasar variables de PHP a JavaScript?

    16:26
  • 8
    Evita el código espagueti

    Evita el código espagueti

    08:58
  • 9
    Refactorizando código espagueti

    Refactorizando código espagueti

    18:19
Manejo de formularios
  • 10
    Cómo obtener una solicitud al servidor con PHP

    Cómo obtener una solicitud al servidor con PHP

    08:01
  • 11
    Envío de un formulario a través de GET

    Envío de un formulario a través de GET

    12:13
  • 12
    Envío de un formulario a través de POST

    Envío de un formulario a través de POST

    07:38
  • 13
    Envío de imágenes

    Envío de imágenes

    09:02
  • 14
    Guardando imágenes en el servidor

    Guardando imágenes en el servidor

    07:56
  • 15
    Tipos de inputs

    Tipos de inputs

    15:29
  • 16
    Otros tipos de inputs

    Otros tipos de inputs

    07:14
  • 17
    Valida si un formulario ha sido enviado

    Valida si un formulario ha sido enviado

    11:21
  • 18
    Sanitizando datos de mi formulario

    Sanitizando datos de mi formulario

    15:05
  • 19
    Validando datos

    Validando datos

    07:59
Proyecto: formulario de contacto
  • 20
    Creando el maquetado

    Creando el maquetado

    13:03
  • 21
    Haciendo la lógica de recepción del formulario

    Haciendo la lógica de recepción del formulario

    12:02
  • 22
    Integrando PHPMailer

    Integrando PHPMailer

    20:36
  • 23
    Implementando el servidor de correos de Gmail

    Implementando el servidor de correos de Gmail

    07:40
Conclusión
  • 24
    Es tu turno de poner todo en práctica

    Es tu turno de poner todo en práctica

    01:50
    Andriw Jose Rollo Castro

    Andriw Jose Rollo Castro

    student•
    hace 3 años

    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 michi@mail.com
    • Nuestra app tiene una dirección de correo "intermediaria" llamada contac-center@mail.com. 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 "intermediaria", 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 contac-center@mail.com 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 "intermediaria" podría incluso ser la misma de soporte, enviando un mensaje a sí mismo con la información del usuario. Recordemos que la cuenta "intermediaria" 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! 💚

      Javier Enrique Borjas Tapia

      Javier Enrique Borjas Tapia

      student•
      hace 2 años

      Totalmente de acuerdo con tu comentario , estuve probando y pensando un rato sobre esto hasta que leí tu comentario seguiré investigando de como se implementa esta herramienta .

      German David Lievano Suarez

      German David Lievano Suarez

      student•
      hace 2 años

      si entiendo, hice la prueba enviandolo a otro correo diferente, y en realidad el correo deberia llegar automaticamente a nuestro gmail configurado, y la casilla de nuestra pagina con el email del cliente deberia ser parte de informacion de contacto en nuestro formulario de pagina web diseñada, para asi nosotros como empresa o servicio tener esos datos de contacto y poder responder...

    joaquin dati

    joaquin dati

    student•
    hace 4 años

    Hola! A quienes no les llegue el mail a Gmail agreguen "use PHPMailer\PHPMailer\SMTP;" abajo de "use PHPMailer\PHPMailer\PHPMailer;" en su archivo mail.php :)

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

      Daniel Eduardo Salmerón Alvarado

      Daniel Eduardo Salmerón Alvarado

      student•
      hace 3 años

      Intenté agregar esa línea de código pero aún sigo sin recibir el mail :(

    Jenny Aguilar

    Jenny Aguilar

    student•
    hace 2 años

    Para que no te quiebres la cabeza...

    Conforme lo dice expresamente la documentación de Gmail, este método ya no es válido para abril 2024.

    "Para proteger mejor tu cuenta, Gmail ya no admite aplicaciones ni dispositivos de terceros que requieran que compartas tu nombre de usuario y tu contraseña de Google. Si compartes las credenciales de tu cuenta con terceros, los hackers podrán acceder a ella más fácilmente."

    Referencia: https://support.google.com/mail/answer/7126229?visit_id=638495410088696499-1233383435&hl=es&rd=1

    Mi recomendación, si ves este video, es sólo para tener una idea de cómo se hacía en el pasado por si algún cliente desfasado recurre a ti por un problema con sus formularios ya sabes por donde puede ir.

    Por lo demás, intenta buscar otro modo o sigue los cursos para ver formas más actualizadas.

      Santiago Armendáriz

      Santiago Armendáriz

      student•
      hace 2 años

      Muchas gracias, estaba buscando por todos lados como general el passkey

      Jose Eduardo Carbonell Ledesma

      Jose Eduardo Carbonell Ledesma

      student•
      hace 13 días

      Si es posible realizarlo, aunque está un poco escondido de hecho.

    Joel Dominguez Merino

    Joel Dominguez Merino

    student•
    hace 3 años

    ¿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 :D 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!!!!

    form2.jpg

    Arturo Matías López Salinas

    Arturo Matías López Salinas

    student•
    hace 2 años

    La verdad estuve horas verificando porque no me funcionaban correos reales y lo mas razonable es creer que el metodo explicado en el video ya no es posible en la actualidad (10/2023), pero aporto con una correccion a la logica para que el formulario de contacto llegue a "la empresa" en lugar de al propio usuario que no es muy logico que haga eso:

    <?phprequire("vendor/autoload.php"); use PHPMailer\PHPMailer\PHPMailer;//use PHPMailer\PHPMailer\SMTP;//use PHPMailer\PHPMailer\Exception; function sendMail($subject, $body, $email, $name, $html = false){     //configuracion inicial de nuestro servidor    $phpmailer = new PHPMailer();    $phpmailer->isSMTP();    $phpmailer->Host = 'smtp.mailtrap.io';    $phpmailer->SMTPAuth = true;    $phpmailer->Port = 2525;    $phpmailer->Username = 'correoservidor';    $phpmailer->Password = 'contraseñaservidor';     //añadiendo destinatarios    $phpmailer->setFrom($email , $name);    $phpmailer->addAddress('contacto@artroxxgaming.com', 'Formulario Contacto');

        //definiendo el contenido del email    $phpmailer->isHTML($html);                                  //Set email format to HTML    $phpmailer->Subject = $subject;    $phpmailer->Body    = $body;     $phpmailer->send();} ?>

    Rafael Junior Ortiz Sánchez

    Rafael Junior Ortiz Sánchez

    student•
    hace 4 años

    Hola, a alguien mas le aparece este error al momento de enviar el formulario?

    Fatal error: Uncaught Error: Cannot unpack array with string keys in C:\xampp\htdocs\formulario\index.php:13 Stack trace: #0 {main} thrown in C:\xampp\htdocs\formulario\index.php on line 13

    <?php require("mail.php"); function validate($name, $email, $subject, $message, $form) { return !empty($name) && !empty($email) && !empty($subject) && !empty($message); } $status = ""; if ( isset($_POST["form"]) ) { if ( validate(...$_POST) ) { $name = $_POST["name"]; $email = $_POST["email"]; $subject = $_POST["subject"]; $message = $_POST["message"]; $body = "$name <$email> te envia el siguiente mensaje: <br><br> $message"; // Mandar el correo sendMail($subject, $body, $email, $name, true); $status = "success"; } else { $status = "danger"; } } ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="style.css"> <title>Formulario de contacto</title> </head> <body> <?php if($status == "danger"): ?> <div class="alert danger"> <span>Surgió un problema</span> </div> <?php endif; ?> <?php if($status == "success"): ?> <div class="alert success"> <span>¡Mensaje enviado con éxito!</span> </div> <?php endif; ?> <form action="./" method="POST"> <h2>¡Contáctanos!</h2> <div class="input-group"> <label for="name">Nombre:</label> <input type="text" name="name" id="name"> </div> <div class="input-group"> <label for="email">Correo:</label> <input type="email" name="email" id="email"> </div> <div class="input-group"> <label for="subject">Asunto:</label> <input type="text" name="subject" id="subject"> </div> <div class="input-group"> <label for="message">Mensaje:</label> <textarea name="message" id="message"></textarea> </div> <div class="button-container"> <button name="form" type="submit">Enviar</button> </div> <div class="contact-info"> <div class="info"> <span><i class="fas fa-map-marker-alt"></i> 13 Saw Mill Circle, North Olmested.</span> </div> <div class="info"> <span><i class="fas fa-phone"></i> +1 123 456 7890</span> </div> </div> </form> <script src="https://kit.fontawesome.com/bbff992efd.js" crossorigin="anonymous"></script> </body> </html>
      Carlo Andoni

      Carlo Andoni

      student•
      hace 4 años

      Es por la versión de PHP, creo que el profe tiene la ultima versión, yo tengo la version 7.4.22 y me sale igual, pero solo puse todos los campos para validar y me funciona igual todo.

      Rafael Junior Ortiz Sánchez

      Rafael Junior Ortiz Sánchez

      student•
      hace 3 años

      Gracias, realmente si era la versión

    Leibniz Moreno

    Leibniz Moreno

    student•
    hace 3 años

    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:

    Screenshot_1.png
    Screenshot_2.png
    joaquin dati

    joaquin dati

    student•
    hace 4 años

    No me llega el mail al gmail, tengo el codigo igual que el profe. Alguna idea?

      Jainelker Jesus Yepez

      Jainelker Jesus Yepez

      student•
      hace 4 años

      Hola Joaquin 😊. ¿podrías compartirnos un print de pantalla?

    Walter Omar Barrios Vazquez

    Walter Omar Barrios Vazquez

    student•
    hace 4 años

    ¿Alguna sugerencia para enviar mensajes con acentos, eñes o caracteres especiales?

      Cristian Pisco Intriago

      Cristian Pisco Intriago

      student•
      hace 4 años
      $phpmailer->CharSet = PHPMailer::CHARSET_UTF8;
    Daniela Betancur

    Daniela Betancur

    student•
    hace 4 años

    seguí los pasos pero el correo no me llegó. :( cula será mi pecado?

    index.php:

    <?php require("mail.php"); function validate($name, $email, $subject, $message, $form) { return !empty($name) && !empty($email) && !empty($subject) && !empty($message); } $status = ""; if ( isset($_POST["form"]) ) { if ( validate(...$_POST) ) { $name = $_POST["name"]; $email = $_POST["email"]; $subject = $_POST["subject"]; $message = $_POST["message"]; $body = "$name <$email> te envia el siguiente mensaje: <br><br> $message"; sendMail($subject, $body, $email, $name, true); $status = "success"; } else { $status = "danger"; } } ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="style.css"> <title>Formulario de contacto</title> </head> <body> <?php if($status == "danger"): ?> <div class="alert danger"> <span>Surgió un problema</span> </div> <?php endif; ?> <?php if($status == "success"): ?> <div class="alert success"> <span>¡Mensaje Enviado con Exito!</span> </div> <?php endif; ?> <form action="./" method="post"> <h2>¡Contáctanos!</h2> <div class="input-group"> <label for="name">Nombre:</label> <input type="text" name="name" id="name"> </div> <div class="input-group"> <label for="email">Correo:</label> <input type="email" name="email" id="email"> </div> <div class="input-group"> <label for="subject">Asunto:</label> <input type="text" name="subject" id="subject"> </div> <div class="input-group"> <label for="message">Mensaje:</label> <textarea name="message" id="message"></textarea> </div> <div class="button-containber"> <button type="submit" name="form">Enviar</button> </div> <div class="contact-info"> <div class="info"> <span> <i class="fas fa-map-marker-alt"></i> 113 Direccion ficticia, North </span> </div> <div class="info"> <span> <i class="fas fa-phone"></i> +1 235 895 78 98</span> </div> </div> </form> <!-- iconos --> <script src="https://kit.fontawesome.com/664a568355.js" crossorigin="anonymous"></script> </body> </html>

    mail.php

    <?php require("vendor/autoload.php"); use PHPMailer\PHPMailer\PHPMailer; function sendMail($subject, $body, $email, $name, $html = false) { $phpmailer = new PHPMailer(); $phpmailer->isSMTP(); $phpmailer->Host = 'smtp.gmail.com'; $phpmailer->SMTPAuth = true; $phpmailer->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; $phpmailer->Port = 2525; $phpmailer->Username = 'dannybtaa@gmail.com'; $phpmailer->Password = 'AcaVaLaContraSeñaDeGoogle'; $phpmailer->setFrom('contact@miempresa.com', 'Mi empresa'); $phpmailer->addAddress($email, $name); //Add a recipient $phpmailer->isHTML($html); //Set email format to HTML $phpmailer->Subject = $subject; $phpmailer->Body = $body; $phpmailer->send(); } ?>
      Walter Omar Barrios Vazquez

      Walter Omar Barrios Vazquez

      student•
      hace 4 años

      Hola Daniela, debe ser en la configuración del servidor de correo, el puerto debe ser 465 y la contraseña la que generas para aplicaciones.

      Leandro Gavidia Santamaria

      Leandro Gavidia Santamaria

      student•
      hace 4 años

      Tiene el mismo problema que tu, prueba acomodar el puerto y si sigue igual es porque necesita un correo real

    Juan David Rueda Quiroga

    Juan David Rueda Quiroga

    student•
    hace 3 años

    Como evito que me bloqueen por correo masivo??

    Mercy María Ix Ballote

    Mercy María Ix Ballote

    student•
    hace 3 años

    No me llegó el mail :( pongo todo y me sale el mensajito de Mensaje enviado pero no sale en mi bandeja :/

    Beder Danilo Casa Condori

    Beder Danilo Casa Condori

    student•
    hace 3 meses

    Un ejemplo de configuración de correos usando PHPMailer puede incluir:

    1. Incluir el Autoload de Composer:

      require 'vendor/autoload.php';
    2. Crear una instancia de PHPMailer:

      $mail = new PHPMailer\PHPMailer\PHPMailer();
    3. Configurar el Servidor SMTP:

      $mail->isSMTP(); $mail->Host = 'smtp.example.com'; // Servidor SMTP $mail->SMTPAuth = true; // Habilitar autenticación $mail->Username = 'tu_correo@example.com'; // Correo $mail->Password = 'tu_contraseña'; // Contraseña $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; // Habilitar TLS $mail->Port = 587; // Puerto TCP
    4. Configurar el remitente y destinatario:

      $mail->setFrom('tu_correo@example.com', 'Tu Nombre'); $mail->addAddress('destinatario@example.com', 'Nombre Destinatario');
    5. Configurar el contenido del correo:

      $mail->isHTML(true); $mail->Subject = 'Asunto del Correo'; $mail->Body = 'Contenido del correo en HTML';
    6. Enviar el correo:

      if($mail->send()) { echo 'Correo enviado!'; } else { echo 'Error al enviar: ' . $mail->ErrorInfo; }

    Esta configuración básica te permitirá enviar correos electrónicos usando PHPMailer. Asegúrate de ajustar los parámetros según tu servidor y credenciales.

    Andrés Castillo

    Andrés Castillo

    student•
    hace un año

    ¿Alguien tiene idea de que debería cambiar para que funcione con un correo de Microsoft?

    Yerson Felipe Ramirez Garnica

    Yerson Felipe Ramirez Garnica

    student•
    hace 3 años

    Si yo hago uso de un hosting, ya no tengo la necesidad de ingresar a la configuración de gmail para conseguir la contraseña y colocarla $phpmailer->Password?

    Luis Ángel Pérez Meléndez

    Luis Ángel Pérez Meléndez

    student•
    hace 3 años

    El código o más bien la contraseña qué se le género al profe del correo, cual es su función? y con eso alguien puede entrar a ese correo ? o solo es para resivir correo ?

    Eduardo David Alfredo Unrrein

    Eduardo David Alfredo Unrrein

    student•
    hace 3 años

    Hola a todos!!! Parece ser la pregunta sin respuesta... Como a todos aquí, a mi tampoco me llegan los email... Probé cambiar mil cosas y aún así no llegan... Alguien que haya podido resolver el problema!!!

      William Villegas

      William Villegas

      student•
      hace 2 años

      x2

    Daniel Eduardo Salmerón Alvarado

    Daniel Eduardo Salmerón Alvarado

    student•
    hace 4 años

    Hola tengo un problema, el correo no aparece en mi bandeja de entrada. Revisé el código y me parece que todo está bien, ¿alguien sabe porque no me caen los emails que envío? (Adjunto el código en dónde eliminé la contraseña generada solo para que no se vea) Agradecería mucho la ayuda 💚 .

    index.php

    <?php require 'mail.php'; // Validating that the data sent is not empty function validate($name, $email, $subject, $message, $form){ return !empty($name) && !empty($email) && !empty($subject) && !empty($message); }; $status = ""; // Validating if the form was sent, using the name of the button if (isset($_POST["form"])) { // Array unpacking if ( validate(...$_POST) ) { // Saving everything in variables $name = $_POST["name"]; $email = $_POST["email"]; $subject = $_POST["subject"]; $message = $_POST["message"]; // Creating the body of the email $body = "$name <$email> sends you the following message: <br><br> $message"; // Sending the email sendEmail($subject, $body, $email, $name, $subject, true); $status = "success"; } else { $status = "danger"; } }; ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="CSS/style.css"> <title>Contact</title> </head> <body> <?php if($status=="danger"): ?> <div class="alert danger"> <span>There was an error 😓</span> </div> <?php endif; ?> <?php if($status=="success"): ?> <div class="alert success"> <span>¡Message sent succesfully 🥳!</span> </div> <?php endif; ?> <form action="./" method="POST"> <h2>¡Contact me!</h2> <div class="input-group"> <label for="name">Name:</label> <input type="text" name="name" id="name"> </div> <div class="input-group"> <label for="email">E-mail:</label> <input type="email" name="email" id="email"> </div> <div class="input-group"> <label for="subject">Subject:</label> <input type="subject" name="subject" id="subject"> </div> <div class="input-group"> <label for="message">Message:</label> <textarea name="message" id="message"> </textarea> </div> <div class="button-container"> <button name="form" type="submit">Send</button> </div> <div class="contact-info"> <div class="info"> <span><i class="fas fa-map-marker-alt"></i> El Salvador, San Salvador</span> </div> <div class="info"> <span>danielsaytcode@gmail.com</span> </div> </div> </form> <script src="https://kit.fontawesome.com/bbff992efd.js" crossorigin="anonymous"></script> </body> </html>

    .

    mail.php

    <?php require("vendor/autoload.php"); use PHPMailer\PHPMailer\PHPMailer; function sendEmail($subject, $body, $email, $name, $html = false){ // Initial configuration of the mail server $phpmailer = new PHPMailer(); $phpmailer->isSMTP(); $phpmailer->SMTPAuth = true; $phpmailer->Host = 'smtp.gmail.com'; $phpmailer->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; $phpmailer->Port = 465; // Setting a secure port $phpmailer->Username = 'danielsaytcode@gmail.com'; $phpmailer->Password = 'contraseñaxd'; // Recipients $phpmailer->setFrom('contact@miempresa.com', 'Mi empresa'); // The one who sends the mail $phpmailer->addAddress($email, $name); //Add a recipient // Defining the content of the email $phpmailer->isHTML($html); //Set email format to HTML $phpmailer->Subject = $subject; $phpmailer->Body = $body; # $phpmailer->AltBody = 'This is the body in plain text for non-HTML mail clients'; // Sending the email 📧 $phpmailer->send(); } ?>
      Daniel Eduardo Salmerón Alvarado

      Daniel Eduardo Salmerón Alvarado

      student•
      hace 3 años

      Intenté agregar la linea de código de use PHPMailer\PHPMailer\SMTP; Pero aún sigo sin poder recibir los correos :(

      Willian Fernando Cárdenas

      Willian Fernando Cárdenas

      student•
      hace 2 años

      Lograste enviar los correos? Si no, me avisas y te hecho una mano.

    William Andres Sumalé Yol

    William Andres Sumalé Yol

    student•
    hace 4 años

    Alguien mas le arroja este error? Extension missing: openssl Estuve investigando y en php.ini se deberia descomentar la linea donde esta extension=openssl pero cuando revise, ya estaba descomentada, y todas las soluciones que encuentro son la misma

    Shelley Valdés Herrera

    Shelley Valdés Herrera

    student•
    hace 2 años

    No se me conecta desde la clase pasada:

    Te la pelaste. Error: SMTP Error: Could not connect to SMTP host. Failed to connect to serverSMTP server error: Failed to connect to server SMTP code: 13 Additional SMTP info: Permission denied

    (así puse my try catch XD)

Escuelas

  • Desarrollo Web
    • Fundamentos del Desarrollo Web Profesional
    • Diseño y Desarrollo Frontend
    • Desarrollo Frontend con JavaScript
    • Desarrollo Frontend con Vue.js
    • Desarrollo Frontend con Angular
    • Desarrollo Frontend con React.js
    • Desarrollo Backend con Node.js
    • Desarrollo Backend con Python
    • Desarrollo Backend con Java
    • Desarrollo Backend con PHP
    • Desarrollo Backend con Ruby
    • Bases de Datos para Web
    • Seguridad Web & API
    • Testing Automatizado y QA para Web
    • Arquitecturas Web Modernas y Escalabilidad
    • DevOps y Cloud para Desarrolladores Web
  • English Academy
    • Inglés Básico A1
    • Inglés Básico A2
    • Inglés Intermedio B1
    • Inglés Intermedio Alto B2
    • Inglés Avanzado C1
    • Inglés para Propósitos Específicos
    • Inglés de Negocios
  • Marketing Digital
    • Fundamentos de Marketing Digital
    • Marketing de Contenidos y Redacción Persuasiva
    • SEO y Posicionamiento Web
    • Social Media Marketing y Community Management
    • Publicidad Digital y Paid Media
    • Analítica Digital y Optimización (CRO)
    • Estrategia de Marketing y Growth
    • Marketing de Marca y Comunicación Estratégica
    • Marketing para E-commerce
    • Marketing B2B
    • Inteligencia Artificial Aplicada al Marketing
    • Automatización del Marketing
    • Marca Personal y Marketing Freelance
    • Ventas y Experiencia del Cliente
    • Creación de Contenido para Redes Sociales
  • Inteligencia Artificial y Data Science
    • Fundamentos de Data Science y AI
    • Análisis y Visualización de Datos
    • Machine Learning y Deep Learning
    • Data Engineer
    • Inteligencia Artificial para la Productividad
    • Desarrollo de Aplicaciones con IA
    • AI Software Engineer
  • Ciberseguridad
    • Fundamentos de Ciberseguridad
    • Hacking Ético y Pentesting (Red Team)
    • Análisis de Malware e Ingeniería Forense
    • Seguridad Defensiva y Cumplimiento (Blue Team)
    • Ciberseguridad Estratégica
  • Liderazgo y Habilidades Blandas
    • Fundamentos de Habilidades Profesionales
    • Liderazgo y Gestión de Equipos
    • Comunicación Avanzada y Oratoria
    • Negociación y Resolución de Conflictos
    • Inteligencia Emocional y Autogestión
    • Productividad y Herramientas Digitales
    • Gestión de Proyectos y Metodologías Ágiles
    • Desarrollo de Carrera y Marca Personal
    • Diversidad, Inclusión y Entorno Laboral Saludable
    • Filosofía y Estrategia para Líderes
  • Diseño de Producto y UX
    • Fundamentos de Diseño UX/UI
    • Investigación de Usuarios (UX Research)
    • Arquitectura de Información y Usabilidad
    • Diseño de Interfaces y Prototipado (UI Design)
    • Sistemas de Diseño y DesignOps
    • Redacción UX (UX Writing)
    • Creatividad e Innovación en Diseño
    • Diseño Accesible e Inclusivo
    • Diseño Asistido por Inteligencia Artificial
    • Gestión de Producto y Liderazgo en Diseño
    • Diseño de Interacciones Emergentes (VUI/VR)
    • Desarrollo Web para Diseñadores
    • Diseño y Prototipado No-Code
  • Contenido Audiovisual
    • Fundamentos de Producción Audiovisual
    • Producción de Video para Plataformas Digitales
    • Producción de Audio y Podcast
    • Fotografía y Diseño Gráfico para Contenido Digital
    • Motion Graphics y Animación
    • Contenido Interactivo y Realidad Aumentada
    • Estrategia, Marketing y Monetización de Contenidos
  • Desarrollo Móvil
    • Fundamentos de Desarrollo Móvil
    • Desarrollo Nativo Android con Kotlin
    • Desarrollo Nativo iOS con Swift
    • Desarrollo Multiplataforma con React Native
    • Desarrollo Multiplataforma con Flutter
    • Arquitectura y Patrones de Diseño Móvil
    • Integración de APIs y Persistencia Móvil
    • Testing y Despliegue en Móvil
    • Diseño UX/UI para Móviles
  • Diseño Gráfico y Arte Digital
    • Fundamentos del Diseño Gráfico y Digital
    • Diseño de Identidad Visual y Branding
    • Ilustración Digital y Arte Conceptual
    • Diseño Editorial y de Empaques
    • Motion Graphics y Animación 3D
    • Diseño Gráfico Asistido por Inteligencia Artificial
    • Creatividad e Innovación en Diseño
  • Programación
    • Fundamentos de Programación e Ingeniería de Software
    • Herramientas de IA para el trabajo
    • Matemáticas para Programación
    • Programación con Python
    • Programación con JavaScript
    • Programación con TypeScript
    • Programación Orientada a Objetos con Java
    • Desarrollo con C# y .NET
    • Programación con PHP
    • Programación con Go y Rust
    • Programación Móvil con Swift y Kotlin
    • Programación con C y C++
    • Administración Básica de Servidores Linux
  • Negocios
    • Fundamentos de Negocios y Emprendimiento
    • Estrategia y Crecimiento Empresarial
    • Finanzas Personales y Corporativas
    • Inversión en Mercados Financieros
    • Ventas, CRM y Experiencia del Cliente
    • Operaciones, Logística y E-commerce
    • Gestión de Proyectos y Metodologías Ágiles
    • Aspectos Legales y Cumplimiento
    • Habilidades Directivas y Crecimiento Profesional
    • Diversidad e Inclusión en el Entorno Laboral
    • Herramientas Digitales y Automatización para Negocios
  • Blockchain y Web3
    • Fundamentos de Blockchain y Web3
    • Desarrollo de Smart Contracts y dApps
    • Finanzas Descentralizadas (DeFi)
    • NFTs y Economía de Creadores
    • Seguridad Blockchain
    • Ecosistemas Blockchain Alternativos (No-EVM)
    • Producto, Marketing y Legal en Web3
  • Recursos Humanos
    • Fundamentos y Cultura Organizacional en RRHH
    • Atracción y Selección de Talento
    • Cultura y Employee Experience
    • Gestión y Desarrollo de Talento
    • Desarrollo y Evaluación de Liderazgo
    • Diversidad, Equidad e Inclusión
    • AI y Automatización en Recursos Humanos
    • Tecnología y Automatización en RRHH
  • Finanzas e Inversiones
    • Fundamentos de Finanzas Personales y Corporativas
    • Análisis y Valoración Financiera
    • Inversión y Mercados de Capitales
    • Finanzas Descentralizadas (DeFi) y Criptoactivos
    • Finanzas y Estrategia para Startups
    • Inteligencia Artificial Aplicada a Finanzas
    • Domina Excel
    • Financial Analyst
    • Conseguir trabajo en Finanzas e Inversiones
  • Startups
    • Fundamentos y Validación de Ideas
    • Estrategia de Negocio y Product-Market Fit
    • Desarrollo de Producto y Operaciones Lean
    • Finanzas, Legal y Fundraising
    • Marketing, Ventas y Growth para Startups
    • Cultura, Talento y Liderazgo
    • Finanzas y Operaciones en Ecommerce
    • Startups Web3 y Blockchain
    • Startups con Impacto Social
    • Expansión y Ecosistema Startup
  • Cloud Computing y DevOps
    • Fundamentos de Cloud y DevOps
    • Administración de Servidores Linux
    • Contenerización y Orquestación
    • Infraestructura como Código (IaC) y CI/CD
    • Amazon Web Services
    • Microsoft Azure
    • Serverless y Observabilidad
    • Certificaciones Cloud (Preparación)
    • Plataforma Cloud GCP

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
  • Tyc promociones
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads