viernes, 27 de diciembre de 2013

Envío de correo autenticado con PHPMailer

Si nuestro servidor web corre PHP 5, podremos enviar correo autenticado desde cualquier página con unas pocas líneas de código.

Lo primero es descargar la clase PHPMailer desde los repositorios de GitHub. Es un fichero ZIP, así que extraemos su contenido a, por ejemplo, el raíz de nuestro servidor web, en el que quedará una carpeta como esta:


El código que debemos incluir en la página desde la cual queremos hacer el envío sería el siguiente:

<?php
   require('PHPMailer-master/class.phpmailer.php');
   require('PHPMailer-master/class.smtp.php');

   $mail = new PHPMailer();
   $mail->IsSMTP();
   $mail->SMTPAuth = true;
   $mail->isHTML(true);

    $mail->AddAddress("destinatario@eldominioquesea.com");
   $mail->Body = "Este es el HTML que compondrá el cuerpo del mensaje, con sus formatos, etiquetas y demás"
   $mail->AltBody = "Este es el texto para clientes de correo que no muestren HTML";
   $mail->Subject = "El asunto del mensaje";

   $mail->Host = "smtp.miservidordecorreo.com";
   $mail->From = "micuentaremitente@miservidordecorreo.com";
   $mail->FromName = "El nombre de remitente que queremos que aparezca";
   $mail->Username = "micuentaremitente@miservidordecorreo.com";
   $mail->Password = "contraseñadelacuentaremitente"; 
   $result = $mail->Send();
?>

Claro está, hay que cambiar los textos y datos de ejemplo y poner los buenos. 

Éste podría considerarse el código mínimo. Si, además, queremos tunearlo un poco más, podemos añadir destinatarios ocultos:

   $mail->AddBCC("destinatariooculto@eldominioquesea.com");

Evitar problemas de codificación con tildes, eñes y caracteres especiales:

  $mail->CharSet = 'UTF-8';

E incluso enviar documentos adjuntos en el correo:

   $mail->addAttachment('/adjuntos/documento.zip'); 

También sería recomendable cambiar el nombre de la carpeta extraída del ZIP de GitHub y darle un nombre arbitrario para que ningún listo pueda utilizar la clase para hacer sus propios envíos. Así mismo, es posible adelgazar lo que depositamos en el servidor y extraer sólo la clase principal class.phpmailer.php y, si vamos a tirar de autenticación SMTP, tambien class.smtp.php.


1 comentario:

  1. Buen dia Javier yo estoy trabajando con un proyecto en el que implemento esta libreria para el envio de correos pero tengo un problema y espero me pudieras ayudar, mi script funciona perfectamente en IE, Chrome y Firefox pero al utilizar el navegador de Safari al parecer si ejecuta el script pero no envia el correo, estube buscando y no encuentro ningun post sobre este tema, bueno espero me puedas ayudar.
    Saludos!!

    ResponderEliminar