PHPMailer “Enviar correo electrónico”
PHPMailer 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 sería muy engorroso. Viene con un conjunto de métodos que nos ayudarán en
el envió de emails.
Creamos
un nuevo documento PHP en donde incluimos la clase y luego creamos una
instancia de la clase para utilizarla más adelante.
<?php
Require ("class.phpmailer.php");
$mail = new PHPMailer ();
?>
Propiedades
del Mensaje
El
siguiente paso es asignar las propiedades del correo que vamos a enviar como el
servidor de correo, subject y From. Luego con el método AddAddress
asignamos a quien o quienes vamos a enviar el correo, también se puede utilizar
AddCC y AddBCC para las copias y copias ocultas:
$mail->Host = "localhost";
$mail->From = "remite@email.com";
$mail->FromName = "Nombre del
Remitente";
$mail->Subject = "Subject del correo";
$mail->AddAddress("destino1@correo.com","Nombre 01");
$mail->AddAddress("destino2@correo.com","Nombre 02");
$mail->AddCC("usuariocopia@correo.com");
$mail->AddBCC("usuariocopiaoculta@correo.com");
Cuerpo
del Mensaje
Hasta
aquí hemos utilizado las funciones básicas de correo, pero ahora viene la parte
del cuerpo del mensaje. Podemos enviar correo en formato HTML e incluso definir
un texto que se mostrará si es que el lector de correo no soporta HTML.
$body = "Hola
<strong>amigo</strong><br>";
$body .= "probando
<i>PHPMailer<i>.<br><br>";
$body .= "<font
color='red'>Saludos</font>";
$mail->Body = $body;
$mail->AltBody = "Hola amigo\nprobando PHPMailer\n\nSaludos";
Agregar
Archivos Adjuntos
Ahora si
deseamos añadir un archivo adjunto a nuestro mensaje utilizamos el método AddAttachment
el cual recibe dos parámetros, el primero es la ruta del archivo que vamos a
incluir y el segundo es el nombre que se va a mostrar en el correo para este
archivo.
$mail->AddAttachment("images/foto.jpg", "foto.jpg");
$mail->AddAttachment("files/demo.zip", "demo.zip");
Finalizando
Finalmente
el envío del correo se hace con la función send (). Entonces uniendo todas las
partes de nuestro código tenemos:
Require ("class.phpmailer.php");
$mail = new PHPMailer();
$mail->Host = "localhost";
$mail->From = "remite@email.com";
$mail->FromName = "Nombre del
Remitente";
$mail->Subject = "Subject del correo";
$mail->AddAddress("destino1@correo.com","Nombre 01");
$mail->AddAddress("destino2@correo.com","Nombre 02");
$mail->AddCC("usuariocopia@correo.com");
$mail->AddBCC("usuariocopiaoculta@correo.com");
$body = "Hola
<strong>amigo</strong><br>";
$body .= "probando
<i>PHPMailer<i>.<br><br>";
$body.= "<font
color='red'>Saludos</Font>";
$mail->Body = $body;
$mail->AltBody = "Hola amigo\nprobando PHPMailer\n\nSaludos";
$mail->AddAttachment("images/foto.jpg", "foto.jpg");
$mail->AddAttachment("files/demo.zip", "demo.zip");
$mail->Send ();
PHPMailer
tiene la posibilidad de enviar archivos adjuntos.
Para el envío de correos
electrónicos utilizando PHP disponemos de una función bastante potente,
incluida en todas las versiones de PHP, sin necesidad de instalar ningún
añadido, en contra de lo que ocurría con ASP.
En concreto, en PHP disponemos de una función llamada mail () que
permite configurar y enviar el mensaje de correo. La función se llama mail () y
recibe tres parámetros de manera obligada y otros dos parámetros que podemos
colocar opcionalmente. Devuelve true si se envió el mensaje correctamente y
false en caso contrario.
Parámetros necesarios en todos los casos
Destinatario: la dirección de correo o direcciones de correo que han de recibir el mensaje. Si incluimos varias direcciones debemos separarlas por una coma.
Asunto: para indicar una cadena de caracteres que queremos que sea el asunto del correo electrónico a enviar.
Cuerpo: el cuerpo del mensaje, lo que queremos que tenga escrito el correo.
Ejemplo de envío de un mail sencillo
Destinatario: la dirección de correo o direcciones de correo que han de recibir el mensaje. Si incluimos varias direcciones debemos separarlas por una coma.
Asunto: para indicar una cadena de caracteres que queremos que sea el asunto del correo electrónico a enviar.
Cuerpo: el cuerpo del mensaje, lo que queremos que tenga escrito el correo.
Ejemplo de envío de un mail sencillo
<?
mail("pepito@desarrolloweb.com,maria@guiartemultimedia.com","asuntillo","Este es el cuerpo del mensaje") ?> |
Parámetros opcionales del envío de correo
Headers: Cabeceras del correo. Datos como la dirección de respuesta, las posibles direcciones que recibirán copia del mensaje, las direcciones que recibirán copia oculta, si el correo está en formato HTML, etc.
Additional_parameters: esta opción no suele utilizarse y, además, sólo está disponible a partir de la versión PHP 4.0.5 y desde PHP 4.2.3 está deshabilitado en modo seguro. Puede usarse para pasar parámetros adicionales al programa configurado para enviar el correo, cuando se manda el mail usando la opción de configuración sendmail_path.
Ejemplo complejo de envío de correo
Vamos a enviar un correo con
formato HTML a pepito@desarrolloweb.com, con copia a mariano@desarrolloweb.com
y con copia oculta para pepe@pepe.com y juan@juan.com. La dirección de
respuesta la configuraremos a maria@desarrolloweb.com.
<?
$destinatario = "pepito@desarrolloweb.com"; $asunto = "Este mensaje es de prueba"; $cuerpo = ' <HTML> <head> <title>Prueba de correo</title> </head> <body> <h1>Hola amigos!</h1> <p> <b>Bienvenidos a mi correo electrónico de prueba</b>. Estoy encantado de tener tantos lectores. Este cuerpo del mensaje es del artículo de envío de mails por PHP. Habría que cambiarlo para poner tu propio cuerpo. Por cierto, cambia también las cabeceras del mensaje. </p> </body> </HTML> '; //para el envío en formato HTML $headers = "MIME-Version: 1.0\r\n"; $headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; //dirección del remitente $headers .= "From: Miguel Angel Alvarez <pepito@desarrolloweb.com>\r\n"; //dirección de respuesta, si queremos que sea distinta que la del remitente $headers .= "Reply-To: mariano@desarrolloweb.com\r\n"; //ruta del mensaje desde origen a destino $headers .= "Return-path: holahola@desarrolloweb.com\r\n"; //direcciones que recibián copia $headers .= "Cc: maria@desarrolloweb.com\r\n"; //direcciones que recibirán copia oculta $headers .= "Bcc: pepe@pepe.com,juan@juan.com\r\n"; mail($destinatario,$asunto,$cuerpo,$headers) ?> |
PHP se
configura en el archivo php.ini, donde debemos especificar datos como el
servidor de correo saliente que debe de utilizar PHP para transferir los
mensajes.
|
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.
<?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.
Bueno y útil! Felicitaciones!
ResponderEliminarGracias, me sirvió bastante.
ResponderEliminar
ResponderEliminardisculpa es que cuando respondo el correo a dos destinatarios el correo del 2do no me aparece en la respuesta, que puedo hacer????