Enviar correo electrónico con PHP mediante PHPMailer

Hola amigos, en esta ocasión les traemos un pequeño ejemplo del uso de PHPMailer, PHPMailer es una clase escrita en PHP que nos facilita el envío de correo electrónico e incluso nos amplia las posibilidades y opciones que ofrece la clase mail() incluida en PHP, como por ejemplo el agregar archivos adjuntos al mensaje.

Antes de comenzar es necesario que descarguemos las clases necesarias para el funcionamiento de PHPMailer, estas clases son: class.phpmailer.php y class.smtp.php, las podemos descargar en esta dirección Descargar PHPMailer

Una vez descargados estos archivos pasamos directamente al código.

<?php

require("class.phpmailer.php");
require("class.smtp.php");

//Especificamos los datos y configuración del servidor
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->SMTPSecure = "ssl";
$mail->Host = "smtp.gmail.com";
$mail->Port = 465;

//Nos autenticamos con nuestras credenciales en el servidor de correo Gmail
$mail->Username = "tucorreo@gmail.com";
$mail->Password = "tupassword";

//Agregamos la información que el correo requiere
$mail->From = "tucorreo@gmail.com";
$mail->FromName = "Tu Nombre";
$mail->Subject = "Enviar Mail con PHPMailer";
$mail->AltBody = "";
$mail->MsgHTML("<h1>Hola Mundo!</h1>");
$mail->AddAttachment("adjunto.txt");
$mail->AddAddress("destinatario@hotmail.com", "Usuario Prueba");
$mail->IsHTML(true);

//Enviamos el correo electrónico
$mail->Send();
?>

En nuestro ejemplo enviamos el correo electrónico autenticandonos con una cuenta de Gmail, si lo que buscan es enviarlo desde otro servidor de correo solo es necesario investigar los datos de configuración tales como puerto, host, etc y reemplazarlos por los mostrados en el código.

Este código fue probado con un servidor PHP versión 5.3.1 y al revisar nuestra bandeja de entrada nos encontramos con esto:

Bueno amigos esto sería todo en este post, esperamos que les haya sido de ayuda y cualquier duda o problema estamos para ayudar. Saludos!

Si quieren descargar el ejemplo del código lo pueden encontrar aquí: http://www.mediafire.com/?4apm6a2h75fk366

25 comentarios en “Enviar correo electrónico con PHP mediante PHPMailer

  1. Hola,
    No he intentado con PHPMailer, pero con Python me ha funcionado de perlas hasta el momento:
    http://blog.desdelinux.net/script-para-enviar-email-desde-terminal/

    Ahora… ¿qué ventajas tendría hacer uso de PHPMailer en vez de Python (o DJango siendo Python en webs)?

    Saludos

  2. Hola, en realidad PHPMailer únicamente es una librería desarrollada en PHP que facilita el envío de correo electrónico y a su vez ofrece muchas funcionalidades que no se encuentran nativas en dicho lenguaje como multiples codificaciones y archivos adjuntos.

    La ventaja o desventaja creo que depende mucho del entorno bajo el cual estés trabajando y las necesidades que tengas en cuanto al envío de correo electrónico.

    Saludos!

  3. Gracias por la info. Aún no lo reviso pero sólo quería comentarte algo… A la próxima no coloques unos datos tan reales. Cualquier persona podría acceder a tu cuenta. Así q ten cuidado.

  4. Hola lo he probado y funciona perfecto muchas gracias! pero en caso de que halla un formulario en donde pidan el correo de uno y algún mensaje?? porque el archivo que pones para descargar no tiene un formulario sino que tengo que recargar la pagina para poder reenviar los correos..

    • Hola Keli, para lo que me comentas necesitarías crear tu un formulario y pasar las variables por método POST o GET al archivo que pongo, es decir, en el archivo que pongo deberás recoger los datos del formulario y procesarlos de la misma forma

  5. Que tal, me podrias ayudar , el como enviar correos con una cuenta de hotmail con phpmailer, he intentado todo y no me queda.

    • El proceso en teoría debe ser el mismo, solo debes buscar el puerto y el host correspondientes a Hotmail.

      La verdad nunca he hecho este ejemplo con Hotmail pero he escuchado que por los tipos de sistemas cerrados que maneja Microsoft, en muchas ocasiones da problemas o simplemente no deja ejecutar esta clase de cosas.

      Saludos!

  6. Hola ! muchas gracias por el articulo y enhorabuena por el blog ! he probado el codigo pero m dice q hay líneas obsoletas y he incluido las librerias que m habia descargado yo pero m dice que falla la dirección del remitente, alguna idea d a q puede deberse?

    muchas gracias de antemano !

  7. Miguel Rodriguez

    Hola!!! gracias por el aporte, pero te quería comentar que no me funciona 😦
    estoy utilizando el wamp server, la versión del PHP es 5.3, coloque lo que recomendaste pero nada, sale como deprecated las funciones, cambié por una versión más actual del phpmailer V5, pero igual se queda cargando la página, reviso mi correo y no llegó nada, la verdad no se que es lo que pasa, no funciona si coloque igual con las recomendaciones necesarias. Por favor si pueden apoyarme en este tema sería de bastante ayuda muchas gracias

  8. me sale el siguiente error

    Warning: fsockopen() [function.fsockopen]: unable to connect to ssl://smtp.gmail.com:465 (Unable to find the socket transport «ssl» – did you forget to enable it when you configured PHP?) in C:\wamp\www\html5\phpmailer\class.smtp.php on line 122

  9. muchas gracias no sabes como me ayudo, tenia dias tratando de enviar mi pdf y no mas nada hasta ahorita, la diferencia es que yo adjunto un pdf q se crea dinamicamente para ello el pdf lo meto en una cadena y esa cadena se la paso al addStringAtachment que es para pasar cadenas 😀 graciotas

  10. Por qué podría ser que de Windows, no saliera el correo?, tengo todo configurado con mi cuenta gmail, pero me da este error:

    SMTP -> ERROR: Failed to connect to server: Se produjo un error durante el intento de conexión ya que la parte conectada no respondió adecuadamente tras un periodo de tiempo, o bien se produjo un error en la conexión establecida ya que el host conectado no ha podido responder. (10060)SMTP Connect() failed.

    • Verifica que tu conexión a Internet no tiene cerrados los puertos por los cuales estás intentando conectarte a tu servidor de correo SMTP, normalmente este error aparece cuando los puertos están bloqueados o estas especificando erróneamente el servidor.

      Saludos,

      • Tienes alguna idea de como puedo verificar que no esten cerrados los puertos? segun yo ya abri los puertos en el firewall de windows y en el router y sigo sin enviar el correo con php, te agarceceria

  11. Gracias, he visitados otros ejemplos, y siempre me devolvía el error de Maximum execution time of 30 seconds exceeded.
    Tu ejemplo me funciona perfectamente.

  12. yo ya puedo enviar correo masivo con phpmailer jalando los datos desde mysql pero lo que no funciona es que si un correo esta mal escrito envia el correo hasta antes del que esta mal escrito y los correos que le siguen no se envian denme una solucion por favor posdata : el envio masivo lo hago con un while
    para respuestas mi correo es :
    elcris1793@hotmail.com

  13. mira tengo un problema y es que estoy enviando correos con PHPmailer y me resulta genial el problema es que quiero enviar un enlace concatenado con una variable php así (enlace) lo coloco en el «msgHTML» y no me envía nada. ¿como hago para que me envié la variable?

    gracias.

  14. el enlace es asi(href=enlace?variable=$variable)

  15. It’s a shame you don’t have a donate button! I’d definitely donate to this fantastic
    blog! I guess for now i’ll settle for book-marking and adding your RSS feed to my Google account.
    I look forward to new updates and will talk about this blog with my Facebook group.
    Chat soon!

Replica a keli Cancelar la respuesta