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: 7.4/10 (5 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
Ir al formulario
7

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

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