sesión rssitem pagar iniciar español configurar como php email mailchimp

rssitem - Enviar boletín de Mailchimp a la lista a través de PHP



rss mailchimp (5)

Sí tu puedes. Los detalles y ejemplos de MailChimp están disponibles al iniciar sesión en su panel de control. Usa sus campos de formulario, diseña tu propio formulario.

<form action=''http://xxxx.xxxxlist-manage.com/subscribe'' method=''post''> <p><input type="email" value="" name="EMAIL" class="required email" id="mce-EMAIL" placeholder="enter email address"></p> <p><input type="submit" value="Sign Up" name="subscribe" id="mc-embedded-subscribe" class="btn"></p> <input type=''hidden'' name=''u'' value=''xxxxxxx''> <input type=''hidden'' name=''id'' value=''xxxxxxx''> </form>

¿Hay alguna forma de enviar un correo electrónico HTML y CSS de diseño propio a una Lista de Mailchimp desde una página .php? Quiero integrar una función de boletín a un panel de administración con mi propia plantilla de boletín y enviarla desde allí.

No quiero tener que iniciar sesión en Mailchimp cada vez que quiera enviar un correo electrónico, especialmente porque la plantilla será la misma cada vez.


Si no desea cargar su plantilla en Mailchimp y enviar una campaña presionando su API, Mandrill (como @Whymarrh mencionado anteriormente en los comentarios) puede ser una buena opción.

Aunque está destinado a correos electrónicos transaccionales (bienvenida, recuperación de contraseña, etc.), puede enviar hasta 1000 usuarios a la vez a través de SMTP. Además, puede conectar su cuenta de Mailchimp a su Mandrill one en la sección Integraciones para rastrear la actividad de los destinatarios.

Mi sugerencia sería instalar el cliente de la API de Mandrill PHP, cargar su plantilla a Mandrill, golpear la API de Mailchimp para su lista de usuarios, y luego incluirla en una llamada de envío de plantillas de Mandrill que active a través del panel de administración. (Sugerencia profesional sobre el envío de correos electrónicos masivos: Mandrill enviando a varias personas como mensaje separado a través de la API REST ).


Su pregunta se divide en dos partes:

  1. ¿Cómo obtengo mi lista de correos electrónicos de MailChimp?
  2. ¿Cómo puedo enviar correos electrónicos a direcciones de correo electrónico arbitrarias?

La primera parte es la más importante aquí. La segunda parte tiene un montón de respuestas posibles y debería ser bastante fácil de lograr.

Obteniendo la lista de MailChimp

MailChimp proporciona una API que es crítica. Actualmente, están trabajando en v3.0, pero v2.0 todavía está marcado como ''actual'', por lo que confiaremos en esa versión de la API. Para usar la API, MailChimp recomienda algunos paquetes de terceros . Para este ejemplo, estoy usando mailchimp-api que se puede instalar usando composer:

$ composer require drewm/mailchimp-api

Para autenticarse en MailChimp, necesitará una clave API . MailChimp proporciona instrucciones completas para obtener la clave API, pero la versión corta es esta:

  1. Haga clic en el nombre de su perfil para expandir el Panel de la cuenta y elija Cuenta.

  2. Haga clic en el menú desplegable Extras y elija las claves API.

  3. Copie una clave API existente o haga clic en el botón Crear una clave.

  4. Nombre su clave descriptivamente, para que sepa qué aplicación usa esa clave.

A continuación, necesita su ID de lista para la lista de la que desea obtener correos electrónicos. Una vez más, MailChimp proporciona la mejor documentación para esto. La identificación de mi lista era una cadena de 10 caracteres que contenían letras y números.

Finalmente, escribimos el PHP:

$apiKey = /*Your API key*/; $listId = /*Your List ID*/; $MailChimp = new /Drewm/MailChimp($apiKey); $args = array( ''id'' => $listId, ); $result = $MailChimp->call(''lists/members'', $args); //Check for any errors first, if none have occured, build the email list. if(isset($result[''status'']) && $result[''status''] == ''error''){ throw new Exception(''call to Mailchimp API has failed.''); } else { $emails = array(); //Build an array of emails for users that are currently subscribed. foreach($result[''data''] as $recipient){ if($recipient[''status''] == ''subscribed'' && !empty($recipient[''email''])){ $emails[] = $recipient[''email'']; } } }

$MailChimp->call(''lists/members'', $args) devuelve una respuesta JSON muy fuerte con mucha información interesante. Si estaba almacenando información personalizada a través de la configuración de combinación en MailChimp, estarán disponibles en esta respuesta JSON. Sin embargo, para mantener este ejemplo lo más simple posible, solo he comprobado si un usuario está suscrito y almacenó su dirección de correo electrónico.

Al final de este bloque, $emails ahora almacenan todas las direcciones de correo electrónico en su lista. Ya que esto llama a la API cada vez, también se eliminará aquí a cualquier persona que cancele la suscripción de su lista de correo en MailChimp.

Un posible gotcha puede ocurrir durante esta etapa. Si tienes una lista grande (yo probé con solo 4), puedes encontrarte con un problema de memoria donde PHP intenta construir una enorme matriz de $emails . Si te encuentras con este problema, deberías dividir los correos electrónicos en bloques más pequeños y enviarlos así.

Enviando correo masivo usando PHP

Otros han recomendado el uso de Mandrill para enviar correos electrónicos masivos. Esta es una mala idea. Mandrill es el servicio hermano de MailChimp que está destinado a enviar correos electrónicos transaccionales ; MailChimp está destinado a correo electrónico masivo (como un boletín informativo).

Hay muchas maneras de enviar correos electrónicos usando PHP. Sendgrid usar Sendgrid como mi proveedor SMTP y SwiftMailer para conectarme a él. Otras alternativas serían usar la función mail() PHP o una biblioteca diferente como PHPMailer .

Puedes instalar SwiftMailer usando Composer:

$ composer require swiftmailer/swiftmailer @stable

Entro en más detalles sobre SwiftMailer y los servicios SMTP (aunque en un contexto ligeramente diferente) en esta pregunta . Pero este ejemplo hará lo que necesite.

$sendgridUser = /*SendGridUsername*/; $sendgridPassword = /*SendGridPassword*/; $subject = "Thank you for using MailChimp Lists!"; $fromAddress = "[email protected]"; $fromName = "Hayden Pierce"; $body = file_get_contents(/*path to content (body.html)*/); $transport = Swift_SmtpTransport::newInstance(''smtp.sendgrid.net'', 587, ''tls'') ->setUsername($sendgridUser) ->setPassword($sendgridPassword) ; foreach($emails as $email){ $mailer = Swift_Mailer::newInstance($transport); $message = Swift_Message::newInstance() ->setSubject($subject) ->setFrom(array($fromAddress => $fromName)) ->setTo($email) ->setBody($body); $mailer->send($message); exit(); }

Para simplificar, leí todo el cuerpo de un archivo HTML estático. Puede considerar usar un motor de plantillas como Twig para implementarlo mejor usando plantillas.

Todo este código junto se ve así:

//Loading in composer dependencies require "vendor/autoload.php"; //Provided by Mailchimp account settings $apiKey = /*MailChimp API keys*/; $listId = /*MailChimp List id*/; $sendgridUser = /*SendGridUser*/; $sendgridPassword = /*SendGridPassword*/; $subject = /*The subject line of your email*/; $fromAddress = /*The email address for your FROM line*/; $fromName = /*The name in your FROM line*/; $body = file_get_contents(/*path to your html content*/); $MailChimp = new /Drewm/MailChimp($apiKey); $args = array( ''id'' => $listId, ); $result = $MailChimp->call(''lists/members'', $args); //Check for any errors first, if none have occurred, build the email list. if(isset($result[''status'']) && $result[''status''] == ''error''){ throw new Exception(''call to Mailchimp API has failed.''); } else { $emails = array(); //Build an array of emails for users that are currently subscribed. foreach($result[''data''] as $recipient){ if($recipient[''status''] == ''subscribed'' && !empty($recipient[''email''])){ $emails[] = $recipient[''email'']; } } } //Setup for sending emails to an arbitrary list of emails using Sendgrid. $transport = Swift_SmtpTransport::newInstance(''smtp.sendgrid.net'', 587, ''tls'') ->setUsername($sendgridUser) ->setPassword($sendgridPassword) ; foreach($emails as $email){ //Send emails to each user. $mailer = Swift_Mailer::newInstance($transport); $message = Swift_Message::newInstance() ->setSubject($subject) ->setFrom(array($fromAddress => $fromName)) ->setTo($email) ->setBody($body); $mailer->send($message); }


v2.0 (en desuso) de la API de MailChimp tiene métodos de Creación de campañas y Envío de campañas . Estos no son los métodos más fáciles de usar, pero la API actual (v3.0) aún no los tiene, así que esa es su mejor opción.


Para crear una campaña con HTML personalizado.

Utilizar campañas / crear un punto final de API: https://apidocs.mailchimp.com/api/2.0/campaigns/create.php

El contenedor PHP está aquí: https://bitbucket.org/mailchimp/mailchimp-api-php

Parece que Mailchimp_Campaigns :: create es la función que puedes usar. Preste mucha atención al parámetro $ content (cadena html para contenido HTML en bruto / pegado)

Una vez que se crea la campaña, obtendrá su ID.

Para enviar la campaña creada.

Utilice la función Mailchimp_Campaigns :: enviar con el ID de la campaña creada anteriormente