Envíos masivos de e-mails con PHPMailer y Mandrill
En este tutorial veremos cómo hacer envíos masivos utilizando la clase PHPMailer y el servicio de SMTP de Mandrill. Este servicio nos permite enviar hasta 12.000 correos por mes de forma gratuita, una vez pasado este límite nos cobra 0,20 dólares los 1000 correos. La cantidad de envíos realizados por hora varía según la calidad de nuestra base de datos. En un próximo tutorial, mostraré una manera muy sencilla de limpiar nuestra lista de suscriptores y de validar los nuevos que vayan llegando desde nuestro sitio web.
¿Qué es Mandrill?
Mandrill nace como un servicio de envíos de e-mails transaccionales, es decir, aquellos que sirven como vía de comunicación entre un sitio web y sus visitantes o usuarios. Muchas veces ocurre que al generar cierto tráfico de envíos desde nuestro servidor, comenzamos a ser vistos por los principales servidores de correo (GMail, Hotmail o Yahoo) como correo indeseado o spam. Mandrill nos asegura que llegará a su destino gracias a su gran infraestructura. Ahora bien, vemos que también nos puede ser útil para hacer los envíos mensuales de nuestros suscriptores al newsletter. ¡Comencemos! Una vez registrados en Mandrill debemos obtener la clave para conectarnos al SMTP. En la barra lateral, iremos al módulo "Settings" y luego haremos clic en el botón "+ Add API Key". Con el Key generado ya estamos tenemos toda la información necesaria para configurar nuestro PHP, utilizando la librería PHPMailer. Los datos que debemos guardar son: host, port, username y password. [caption id="attachment_14528" align="alignnone" width="954"]
Credenciales de Mandrill[/caption] Ahora, descargaremos la librería PHPMailer y la descomprimiremos donde vayamos a desarrollar nuestro script PHP. Para seguir el ejemplo que a continuación veremos, llamaremos a la carpeta "phpmailer". Ahora un poco de código Creamos nuestro archivo "enviar.php" con el siguiente código. /* Primero, obtenemos el listado de e-mails desde nuestra base de datos y la incorporamos a un Array. */ $array = array("primermail@gmail.com","segundomail@yahoo.com"); /* Incluimos el PHPMailerAutoload, que se encarga de incorporar a nuestro código, todos los archivos necesarios para utilizar la librería. Supongamos que guardamos dicha librería en un directorio llamado "phpmailer" */ require("phpmailer/PHPMailerAutoload.php"); $mail = new PHPMailer; // Configuramos los datos de sesión para conectarnos al servicio SMTP de Mandrill $mail->IsSMTP(); // Indicamos que vamos a utilizar SMTP $mail->Host = 'smtp.mandrillapp.com'; // El Host de Mandrill $mail->Port = 587; // El puerto que Mandrill nos indica utilizar $mail->SMTPAuth = true; // Indicamos que vamos a utilizar auteticación SMTP $mail->Username = 'xxxxxxx'; // Nuestro usuario en Mandrill $mail->Password = 'xxxxxxx'; // Key generado por Mandrill $mail->SMTPSecure = 'tls'; // Activamos el cifrado tls (también ssl) // Ahora configuraremos los parámetros básicos de PHPMailer para hacer un envío típico $mail->From = 'xxxx'; // Nuestro correo electrónico $mail->FromName = 'xxxx'; // El nombre de nuestro sitio o proyecto $mail->IsHTML(true); // Indicamos que el email tiene formato HTML $mail->Subject = 'Soy un asunto!'; // El asunto del email $mail->Body = 'Hola, soy el cuerpo del mensaje :)'; // El cuerpo de nuestro mensaje // Recorremos nuestro array de e-mails. foreach ($array as $email) { $mail->AddAddress($email); // Cargamos el e-mail destinatario a la clase PHPMailer $mail->Send(); // Realiza el envío =) $mail->ClearAddresses(); // Limpia los "Address" cargados previamente para volver a cargar uno. } Ahora ejecutamos el archivo desde nuestro servidor y veremos como se envían desde el panel de control de Mandrill, donde veremos los rebotes, los que llegaron como spam, los e-mails incorrectos (¡cuidado!, estos indeseados bajarán nuestra reputación y nos limitarán la cantidad de envíos en una hora). Eso fue todo, espero que sea de utilidad.