Alternativas de la lista de correo electrónico con PHP Uso de la API de la lista de Mailgun

Lo que vas a crear

Durante los últimos dos años, me he encontrado con varias frustraciones tanto con las aplicaciones de listas de correo electrónico de código abierto como con los proveedores pagados basados ​​en la nube. En este tutorial, lo guiaré en mi adopción de Mailgun.com, una solución económica que he estado usando con éxito durante dos años..

El código abierto PHPList siempre fue bastante complejo, y perdí el interés cuando comenzaron a revisar su interfaz de usuario en direcciones que parecían más complicadas, no menos. En medio de la campaña de recolección de firmas de mi iniciativa en Seattle, Mailchimp deshabilitó mi lista de correo electrónico, diciendo que no obtuve correctamente los permisos de los miembros, a pesar de que cada uno había dado personalmente a nuestra campaña su correo electrónico en formularios impresos. Luego descubrí Mailgun y decidí crear mi propia solución, que he estado usando desde entonces..

Mailgun es un cañón de correo electrónico SaaS basado en la nube, como SendGrid. En realidad es gratis para hasta 10,000 correos electrónicos por mes. Mailgun es increíblemente poderoso y ofrece una API bien documentada en una variedad de idiomas populares. Proporciona capacidades de envío y recepción, la última de las cuales puede ser bastante difícil de desarrollar desde cero. Si bien Mailgun no proporciona plantillas para boletines informativos HTML enriquecidos, proporciona una plataforma en la que puedes construir cualquier cosa..

Utilizo los servicios de la lista de Mailgun para comunicarme con amigos y llegar a mis comunidades sociales, y también para negocios y mercadeo. Para la mayoría de mis necesidades, los correos electrónicos de transmisión HTML simples funcionan bien.

En este tutorial, lo guiaré a través de ListApp, un applet que se basa en la API de la lista de Mailgun. En un tutorial de seguimiento, lo guiaré en la creación de su propio esquema de lista de correo electrónico en PHP y MySQL nativos. Cada enfoque tiene sus propias ventajas..

Si principalmente desea transmitir y desea utilizar la propia interfaz de usuario web de Mailgun basada en la nube para administrar su lista, ListApp puede ser la mejor opción. Aquí hay un ejemplo de la interfaz de usuario basada en la web de Mailgun para administrar listas:

Usando ListApp, la copia maestra de su lista se mantiene en la nube en Mailgun y se sincroniza localmente a través de la API a su instalación de ListApp.

Si es posible que desee crear listas de correo electrónico grupales o que desee un control más preciso sobre su correo electrónico y las necesidades de direccionamiento, es posible que desee aprender a crear características de la lista desde cero. En el siguiente tutorial, seguiremos dependiendo del motor de Mailgun y la API, pero administraremos las listas en la aplicación en lugar de hacerlo con la API de la lista de Mailgun. Esto también evita la complejidad de la sincronización..

El Open Source ListApp

ListApp proporciona un front-end simple basado en la web para escenarios comunes que puede usar con las funciones de la lista de correo de Mailgun:

  • sincronizar sus listas y miembros de la lista desde la nube de Mailgun
  • Creando, actualizando y borrando listas.
  • importar miembros a una lista
  • enviando mensajes a listas

Puede instalar ListApp en cualquier sistema basado en LAMP. He publicado mi guía genérica para instalar un servidor Ubuntu LAMP como referencia. La aplicación incluye instrucciones para configurar ListApp en un servidor Ubuntu con 1 GB de RAM. Requiere PHP 5.x, MySQL 5.x, y las bibliotecas PEAR y cURL.

ListApp está escrito en el Framework Yii para PHP. No necesita saber nada sobre el framework Yii para ejecutar la aplicación. Si prefieres no usar Yii, puedes construir sobre el componente Yiigun usado en ListApp. Yiigun.php es esencialmente un archivo de clase PHP con métodos y ayudantes para aprovechar el SDK de la lista de correo Mailgun.

Deberás registrarte para obtener una cuenta de Mailgun gratuita (o de nivel superior) para obtener tus claves API para el archivo de configuración. Si tiene una cuenta de pago, deberá agregar sus dominios y la configuración de DNS para usarlos. Si utiliza una cuenta gratuita, su dominio será yourchoice.mailgun.org. Por lo tanto, sus direcciones de lista pueden ser [email protected]. Sus claves de la API de Mailgun se mostrarán en la página de inicio del panel de control.

Cómo utilizar la API de la lista de Mailgun

Usar la API de la lista de correo de Mailgun es muy sencillo. Mailgun proporciona su propia documentación de API de listas de correo para ayudarnos. Puede revisar cómo ListApp usa la API de Mailgun en nuestro componente Yiigun.php. ListApp usa el SDK PHP de Mailgun para interactuar con Mailgun.

Inicializando el SDK PHP de Mailgun

Asegúrese de seguir las instrucciones para configurar sus claves API durante la instalación. Cuando se usa la clase Yiigun, se llama al constructor, creando una inicialización segura con la API de Mailgun:

función __construct () // inicializar la conexión de mailgun $ this-> mg = new Mailgun (Yii :: app () -> params ['mailgun'] ['api_key']); 

Creando una lista

Puede crear nuevas listas de correo usando las opciones de menú a la derecha de ListApp. Cada lista requiere un nombre, una dirección de correo electrónico y una descripción. Cuando creas una nueva lista, ListApp carga la lista y su configuración en Mailgun también. También puede actualizar las propiedades de cualquier lista..

Así es como creamos una nueva lista:

función pública listCreate ($ newlist) $ result = $ this-> mg-> post ("lists", array ('address' => $ newlist-> address, 'name' => $ newlist-> name, 'descripción '=> $ newlist-> descripción,' access_level '=> $ newlist-> access_level)); devuelve $ resultado-> http_response_body; 

Así es como actualizamos las propiedades de la lista de correo:

 función pública listUpdate ($ existing_address, $ model) $ result = $ this-> mg-> put ("lists /".$ existing_address, array ('address' => $ model-> address, 'name' => $ model-> name, 'description' => $ model-> description, 'access_level' => $ model-> access_level)); devuelve $ resultado-> http_response_body; 

Importando miembros a la lista

Puede importar nuevos miembros a cualquier lista desde ListApp. Usamos las bibliotecas de análisis de listas de correo electrónico de PEAR para esta función. Puede pegar en cualquier lista de direcciones de correo electrónico en el formulario Nombre personal , Separados por comas o líneas nuevas. ListApp agregará los miembros localmente y los cargará a Mailgun.com.

Para agregar miembros de forma masiva, primero creamos una cadena JSON de los nuevos miembros para cargar: aquí hay algunos ejemplos de código que puede usar.

$ json_upload = '[' foreach ($ direcciones como $ i) $ json_upload. = ''; $ json_upload. = '"nombre": "'. $ i-> nombre. '",'; $ json_upload. = '"address": "'. $ i-> address. '"'; $ json_upload. = ',';  $ json_upload. = ']';

Luego llamamos a la función de carga masiva con esta cadena JSON:

función pública memberBulkAdd ($ list = ", $ json_str =") $ result = $ this-> mg-> post ("lists /".$ list. '/ members.json', array ('members' => $ json_str, 'suscrito' => verdadero, 'upsert' => 'sí')); devuelve $ resultado-> http_response_body; 

También puede agregar miembros individuales a las listas, usando la Añadir un miembro opción de menú.

Enviando un mensaje

Puede enviar un mensaje a cualquier lista usando el menú de la derecha. Entregamos el mensaje saliente a Mailgun como cualquier otro mensaje. los $ a la dirección es en realidad la dirección de la lista de correo de Mailgun, como [email protected]:

función pública send_simple_message ($ to = ", $ subject =", $ body = ", $ from =") if ($ from == ") $ from = Yii :: app () -> params ['supportEmail'] ; $ domain = Yii :: app () -> params ['mail_domain']; $ result = $ this-> mg-> sendMessage ($ domain, array ('from' => $ from, 'to' => $ to, 'subject' => $ subject, 'text' => $ body,)); return $ result-> http_response_body;

Mailgun luego administra la entrega del mensaje a destinatarios individuales.

Puedes ver más ejemplos de la API Mailgun List en acción aquí.

También puede usar algunas de las variables genéricas del destinatario de Mailgun para incluir saludos personales, como Hola % recipient_fname% (ver la documentación de Variables de Plantilla).

Sincronización de listas y miembros de la lista

También puede administrar sus listas a través de la interfaz de usuario web de Mailgun. Luego, cuando abra ListApp, haga clic en el Sincronizar opción. Esto buscará copias de todas las listas de correo existentes en Mailgun y descargará a todos sus miembros en la base de datos local. Básicamente, sincroniza tu lista de correo desde el sitio Mailgun.com. Esta opción no se sincroniza.

Aquí esta la fetchListas función. El uso del Mailgun PHP SDK hace esto bastante simple:

 función pública fetchLists () $ result = $ this-> mg-> get ("lists"); devuelve $ resultado-> http_response_body; 

Así es como obtenemos miembros:

función pública fetchListMembers ($ address) $ result = $ this-> mg-> get ("lists /".$ address. '/ members'); devuelve $ resultado-> http_response_body; 

Extendiendo ListApp

La versión actual de ListApp habla con Mailgun en tiempo real y no tiene un manejo extenso de errores. A más largo plazo, sería bueno agregar solicitudes de API asíncronas y en cola.

Además de la documentación de la API de la lista de correo de Mailgun (que incluye ejemplos en cURL, Ruby, PHP, Python, Java y C #), puede revisar, extraer y adaptar el archivo Yiigun.php y sus funciones para su propio marco o aplicación PHP..

Si no usa Yii, deberá usar Composer para instalar el SDK según las instrucciones de instalación de Mailgun..

Lo que has aprendido

Ahora tiene un applet que puede crear y administrar listas basadas en la nube a través de la API de Mailgun y usarlas para mantener a sus amigos, colegas y clientes informados y actualizados. En la segunda parte, te mostraré cómo crear listas de correo electrónico de forma nativa en PHP y MySQL. Seguiremos confiando en el motor de Mailgun y la API, pero administraremos las listas en la aplicación en lugar de hacerlo con la lista de API de Mailgun.

Por favor, siéntase libre de publicar sus preguntas y comentarios a continuación. También puedes contactarme en Twitter @reifman o enviarme un correo electrónico directamente. Sigue la página de mi instructor Tuts + para ver los futuros artículos de esta serie.

enlaces relacionados

  • Mailgun.com
  • Documentación de la API Mailgun List
  • Cómo hacer del correo electrónico una parte poderosa de su aplicación web con SendGrid (Tuts +)
  • Introducción al Marco Yii (Tuts +)