13 05

PHPMailer. Enviar correos electrónicos con PHP

Publicado por Yoné Rocha en Diseño Web, PHP

Habitualmente, para el envío de correo con PHP se utiliza la función mail(), integrada en el propio lenguaje. Sí bien la función cumple con su cometido, son notorias sus limitaciones.

PHPMailer es una clase que cubre las carencias de mail() y facilita el uso de propiedades avanzadas en el envío de correos. Por ejemplo, permite ficheros adjuntos o utilizar un servidor SMTP con autenticación. Gracias a esta última característica podremos enviar correos desde nuestra cuenta Gmail y evitar la instalación de un servidor de correo.

El primer paso para usar PHPMailer es descargar la clase de sourceforge. Nos encontraremos con dos archivos que debemos instanciar en nuestro código, class.phpmailer.php con la clase y class.smtp.php, opcional para utilizar servidores SMTP.

Empezamos con un ejemplo simple usando Sendmail:

require 'class.phpmailer.php';
 
$mail = new PHPMailer();
 
$mail->IsSendmail();//usamos Sendmail, también podemos usar mail() con isMail()
 
$mail->FromName = 'Juan Palomo';
$mail->From = 'remitente@dominio.com';//email de remitente desde donde se envía el correo.
 
$mail->AddAddress('destinatario@dominio.com', 'Destinatario');//destinatario que va a recibir el correo
 
$mail->AddCC('copia@dominio.com', 'copia');//envía una copia del correo a la dirección especificada
 
$mail->Subject = 'Asunto de email';
 
$mail->AltBody = 'cuerpo del mensaje en texto plano';//cuerpo con texto plano
 
$mail->MsgHTML('Mensaje con HTML');//cuerpo con html
 
$mail->AddAttachment("archivo.zip");//adjuntos un archivo al mensaje
 
if(!$mail->Send()) {//finalmente enviamos el email
   echo $mail->ErrorInfo;//si no se envía correctamente se muestra el error que ocurrió
} else {
   echo 'Correo enviado correctamente';
}
 

Enviar un correo usando Gmail y PHPMailer:

require 'class.phpmailer.php';
require 'class.smtp.php'; //incluimos la clase para envíos por SMTP
$mail = new PHPMailer();
 
 
$mail->IsSMTP();
$mail->CharSet = 'UTF-8';
$mail->SMTPAuth = true;
$mail->SMTPSecure = "ssl";
$mail->Host = "smtp.gmail.com"; //servidor smtp
$mail->Port = 465; //puerto smtp de gmail
$mail->Username = 'email@gmail.com';
$mail->Password = 'tucontraseña';
 
$mail->FromName = 'Juan Palomo';
$mail->From = 'remitente@dominio.com';//email de remitente desde donde se envía el correo.
 
$mail->AddAddress('destinatario@dominio.com', 'Destinatario');//destinatario que va a recibir el correo
 
$mail->AddCC('copia@dominio.com', 'copia');//envía una copia del correo a la dirección especificada
 
$mail->Subject = 'Asunto de email';
 
$mail->AltBody = 'cuerpo del mensaje en texto plano';//cuerpo con texto plano
 
$mail->MsgHTML('Mensaje con HTML');//cuerpo con html
 
$mail->AddAttachment("archivo.zip");//adjuntos un archivo al mensaje
 
if(!$mail->Send()) {//finalmente enviamos el email
   echo $mail->ErrorInfo;//si no se envía correctamente se muestra el error que ocurrió
} else {
   echo 'Correo enviado correctamente';
}
 

 

Puntuación: 5.6/10 (18 votos emitidos)

  • Imprimir
  • Facebook
  • Del.icio.us
  • Technorati
  • Digg
  • Menéame

Dirección trackback para este artículo:
http://promineostudios.com/blog/articulo/phpmailer-enviar-correos-electronicos-con-php/trackback

Conozca los últimos comentarios de éste artículo agregando el feed RSS a su lector de noticias

Artículos Relacionados
Referencias a este artículo
21 de octubre del 2011 a las 01:45 - Referencia en
Ir al formulario
18

Gracias por la información, no conocía esta clase. Saludos.

Enlace Permanente | 6 de agosto del 2010 a las 21:28 - Jorge ha dicho

hola amigo gracias, pero tengo una inquietud o duda yo con el phpmailer puedo enviar datos dinamicos sacados de una bd mysql. ej registro a alquiero quiero enviarle un mail informandole su nombre de usuario y pass, eso se pude hacer con el phpmailer como?
gracias

Enlace Permanente | 6 de agosto del 2010 a las 22:16 - charlescuellar ha dicho

Con phpmailer puedes enviar la información que creas oportuna. En ese caso extraes los datos de la db y los envías en el cuerpo del email.

Enlace Permanente | 8 de agosto del 2010 a las 14:43 - Yoné ha dicho


@Yoné:

como lo puedo hacer gracias

Enlace Permanente | 9 de agosto del 2010 a las 01:23 - charlescuellar ha dicho

Eso excede éste artículo. Debes establecer una conexión con la base de datos y obtener los datos que necesites. Puedes mirar éste artículo..

Enlace Permanente | 9 de agosto del 2010 a las 14:04 - Yoné ha dicho

Saludos he estado buscando info al respecto pero no encuentro nada... no se si puedas ayudarme.

Utilizo PHPMailer para enviar cotizaciones, en el codigo no me causa ningun conflicto pero no llega ningun correo...

Como prueba cambie el codigo del body y con ello se envia sin problema, existe alguna limitacion con respecto al tamaño del body??

Enlace Permanente | 16 de agosto del 2010 a las 17:48 - abponk ha dicho


@abponk: Si usas una cuenta gmail, puedes usar el propio servidor smtp de tu cuenta. Sino debes instalar un servidor SMTP en tu equipo... Qúe tipo de cuenta utilizas?

Enlace Permanente | 16 de agosto del 2010 a las 23:15 - yoné ha dicho

¿en que carpeta debo descargar PHPMailer?

o debe ser en el servidor?

gracias

Enlace Permanente | 11 de enero del 2011 a las 23:06 - Jose Moreno ha dicho

En la carpeta donde tengas los scripts

Enlace Permanente | 12 de enero del 2011 a las 16:55 - yoné ha dicho

dghfh

Enlace Permanente | 1 de abril del 2011 a las 01:00 - manuel ha dicho

Gracias, me ha servido de mucho.

Enlace Permanente | 11 de abril del 2011 a las 16:47 - OsFoEl ha dicho

Hola.

Podrían comentar porque no me funciona
esta linea:?

$mail->AddCC('copia@dominio.com', 'copia');//envía una copia del correo a la

La dirección original si llega, pero la copia no, porque?

de antemano gracias

Enlace Permanente | 13 de abril del 2011 a las 16:40 - Luis S ha dicho

hola trabajo con la version de php 5.2 y tengo el codigo copiado tal cual lo explicas tu para poder enviar correos con gmail pero a mi no me envia nada ni me da error, puede ser q dicha version de php no funcione con esta clase de phpmailer y tenga q bajarme una mas reciente?, en caso de ser asi ya lo he hecho pero no es igual a la q pones tu, podrias explicar un ejemplo con la version para php 5?

saludos y gracias

Enlace Permanente | 4 de julio del 2011 a las 09:27 - brais ha dicho

SAludos! excelente esa clase, pero tengo una inquietud, el puerto, y el smtp:

$mail->Host = "smtp.gmail.com"; //servidor smtp
$mail->Port = 465; //puerto smtp de gmail

el smtp es el de entrada de gmail? y seria posible sabiendo mi smtp de correos de un servidor dedicado, configurar una cuenta que cree en cpanel en vez de mi cuenta de gamil? mil gracias!

Enlace Permanente | 7 de agosto del 2011 a las 22:17 - David ha dicho


hola a mi me da este erro estoy usando el codigo del sendmail()
claro cambiando las variables pero me sale esto podrias ayudarme
muchas gracias

error:
Could not execute: /var/qmail/bin/sendmail Could not execute: /var/qmail/bin/sendmail

Enlace Permanente | 14 de septiembre del 2011 a las 18:06 - ada ha dicho

Saludos,
no se si ha alguien le a pasado pero utilizo php mailer para enviar un correo, pero no me adjunta el archivo, hasta ahora solo enviava correos con texto, pero ahora genero un reporte en formato pdf y luego deseo enviarla por correo, el problema me lo da la siguiente linea

$mail->AddAttachment("reporte.pdf")

no me da ningun error pero el correo nunca llega, por el contrario si comento la linea, el correo llega como siemrpe.
alguien puede ayudarme

Enlace Permanente | 11 de octubre del 2011 a las 18:14 - jose ha dicho

Hola, hice la prueba y funciona, de hecho lo tengo alojado en el hosting, lo probé con una dirección de correo coorporativo de la empresa y funciona sin problemas, sin embargo, al enviar correo a un hotmail o gmail no me recibe nada, existe elgún método que sirva para que cualquier tipo de servidor de correo, así se le puede dar dinamismo, gracias

Enlace Permanente | 30 de noviembre del 2011 a las 17:18 - Jonathan Parada Gaete ha dicho

Hola no entendi 8O

Enlace Permanente | 28 de diciembre del 2011 a las 00:48 - mmm ha dicho

Escribe un comentario sobre este artículo

:) :D XD :( :-o 8O :-? 8) :-x :p :-| ;-) :oops: :cry: :evil: :roll: :!: :?: :idea: :arrow: :mrgreen:

Recibe los últimos artículos en tu email
  • bloglines
  • Google
  • Netvibes
  • MyYahoo
  • MyMsn
Artículos Destacados
Autores
Categorías
Archivo

2009 - PromineoStudios - Todos los derechos Reservados

Diseño con estándares web - XHTML CSS - Versión anterior del sitio