PHP MAILER
es una clase
escrita en PHP que facilita el envío de correo, añadiendo facilidad en el envío de correos con adjuntos, en formato HTML y con diferentes codificaciones, soporte para imagenes embebidas,
headers personalizados y además funciona con múltiples servidores de correo.
Típicamente para el envío de correo con PHP se
utiliza la función mail(), pero esta función tiene varias limitaciones, por
ejemplo que no soporta el envío de adjuntos. Entonces PHPMailer nos viene a
facilitar este trabajo que de otra forma seria muy engorroso. Viene con un
conjunto de métodos que nos ayudarán en el envió de mails.
Empezando
Aquí encontraremos dos archivos: class.phpmailer.php el cual contiene
las funciones para el envío de correo y class.smtp.php para enviar correo mediante
servidores SMTP.
Creamos un nuevo documento PHP en donde incluimos la clase y luego creamos una instancia de la clase para utilizarla mas adelante.
1.
<?php
2.
require("class.phpmailer.php");
3.
$mail = new PHPMailer();
4.
?>
¿Por qué usar phpmailer?
Es posible enviar email con la funcion mail() de php, pero dicha función no permite algunas de las más populares características que proporcionan los clientes de correo usados actualmente. Entre estas características se encuentran el envío de email con ficheros adjuntos.PHPMailer hace fácil esta difícil tarea de enviar correos con estas características y puedes incluso utilizar tu propio servidor smtp aunque éste requiera autenticación (un nombre de usuario y contraseña), con lo que se podrá usar una cuenta gratuita de correo obtenida por ejemplo en hotpop.
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.
ejemplo 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'; }