Hace
un tiempo, en el artículo “Envío de correos sobre CodeIgniter” comentaba el uso
de la clase email de CodeIgniter para el envío de correos. En un proyecto
reciente, por determinadas razones, tuve que trabajar en un sitio web que no estaba
montado sobre CodeIgniter y se requería el envío de correos. Al no contar con
la biblioteca email de CodeIgniter que acostumbraba a utilizar tuve que buscar
variantes para el envío de correos usando PHP directamente sin ningún framework intermediario.
Así
encontré que para el envío de correos usando PHP directamente, se puede
utilizar la función mail(), o mejor aún la clase phpmailer. Esta última, en
comparación con la función mail(), permite en uso de SMTP, enviar correos con
ficheros adjuntos, y enviar mensajes en formato HTML desde nuestro sitio
web sin necesidad de tener nuestro propio servidor de correos corriendo en la
máquina.
Con phpmailer se
pueden enviar correos a través de sendmail, PHP mail(), o con smtp. Se
recomienda hacerlo vía smtp porque se pueden usar varios servidores SMTP y de
esta forma repartir la carga entre varias computadoras, enviándose más mensajes
en menor tiempo; además los servidores SMTP permiten mensajes con múltiples
destinatarios (to's) y los conocidos cc's (copia del correo), bcc's (copias
ocultas) y reply-to (direcciones de respuesta).
Su uso es muy
sencillo, en mi caso creé una clase mail_manager que actúa como interfaz con la
clase phpmailer, y en el fichero de mi clase tuve que incluir:
require("PHPMailer-5.2.16/class.phpmailer.php");
require("PHPMailer-5.2.16/class.smtp.php");
En esta clase
incluí dos funciones, una llamada “get_html_body” que recibe como parámetro el
mensaje y elabora internamente un correo con imágenes, el logo y firma de la
empresa, etc en formato HTML y retorna un string HTML; y la función “send_mail”
que recibe como parámetro el destinatario (to) y nombre del destinatario
(to_name), así como el asunto y contenido del correo. El contenido de “send_mail” sería así:
$mail = new PHPMailer();
$mail->Mailer = 'smtp';
$mail->SMTPAuth = true;
$mail->Host = 'smtp.office365.com'; //por
ejemplo
$mail->Username = 'director@enterprise.etc'; //ejemplo ficticio
$mail->Password = 'the_pass';
$mail->Port = 995; //por ejemplo
//correo desde donde se envía (para mostrar)
$mail->From = 'director@enterprise.etc';
$mail->FromName = 'Nombre de la empresa';
//correo al que se envía, pasados por parámetro
$mail->AddAddress($to, $to_name);
$mail->IsHTML(true); //el correo se envía
como HTML
$mail->Subject = $subject;
$mail->Body = $message;
$result = $mail->Send();
return $result;
Así de sencillo. El
uso desde cualquier otro fichero .php sería llamar primero la función “get_html_body”
y luego “send_mail”.
Se pueden
configurar muchos parámetros más como:
$mail->SMTPDebug = 2; //permite modo debug para ver mensajes de las
cosas que van ocurriendo
$mail>SMTPSecure = "ssl"; //en este caso el host sería ssl://smtp… y
hay que habilitar en nuestro servidor la extensión openssl
$mail->AddCC("cuenta@dominio.com"); //copia
$mail->AddBCC("cuenta@dominio.com");
//copia oculta
$mail->AddAttachment("imagenes/imagen.jpg",
"imagen.jpg"); //atachados
$mail>AddReplyTo('director@enterprise.etc', 'Nombre
de la empresa');
$mail->AltBody = "Texto plano sin
html"; // Texto sin html
Pues nada, es una
biblioteca que recomiendo por su enorme flexibilidad de configuraciones y de
un uso comprobado por muchos programadores web.
No hay comentarios:
Publicar un comentario