Product
El SDK de PHP: el primero de muchos SDK oficiales de Mailgun
Hoy nos alegra anunciar que enviar mensajes con Mailgun es aún más fácil para quienes programan en PHP. Durante las últimas semanas, hemos estado trabajando en varios SDK para la API de Mailgun. El SDK te permite interactuar fácilmente con nuestra API, ya que elimina todo el código repetitivo necesario para comunicarse con un servicio web HTTP. Hoy lanzamos la versión para PHP del SDK. Pronto añadiremos más lenguajes.
Para quienes no se hayan familiarizado con un SDK, vamos a repasar primero qué se necesita para enviar un mensaje con la biblioteca HTTP estándar de CURL para PHP.
Envío de un mensaje con CURL:
function send_simple_message() {
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, 'api:key-example');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_URL,
'https://api.mailgun.net/v2/samples.mailgun.org/messages');
curl_setopt($ch, CURLOPT_POSTFIELDS,
array('from' => 'Dwight Schrute ',
'to' => 'Michael Scott ',
'subject' => 'The Printer Caught Fire',
'text' => 'We have a problem.'));
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
echo send_simple_message();
El ejemplo anterior enviará un mensaje con la API de Mailgun. Sin embargo, contiene mucho código que, aunque es importante, resulta complicado y, a menos que seas especialista en CURL, podría ser bastante confuso.
Con nuestro nuevo SDK, hemos logrado reducir el código necesario a tan solo unas líneas.
Envío de un mensaje con el SDK de PHP de Mailgun:
# First, instantiate the SDK with your API credentials and define your domain.
$mgClient = new Mailgun("key-example");
$domain = "example.com";
# Now, compose and send your message.
$mgClient->sendMessage($domain,
array('from' => 'Dwight Schrute ',
'to' => 'Michael Scott ',
'subject' => 'The Printer Caught Fire',
'text' => 'We have a problem.'));
Obtención de registros con el SDK de PHP de Mailgun:
# First, instantiate the SDK with your API credentials and
define your domain.
$mgClient = new Mailgun('key-3ax6xnjp29jd6fds4gc373sgvjxteol0');
$domain = 'samples.mailgun.org';
# Now, issue a get against the "log" resource URL.
$result = $mgClient->get("$domain/log", array('limit' => 5, 'skip' => 0));
Todas las acciones de HTTP devuelven un objeto de respuesta con el que puedes interactuar fácilmente.
# Obtain the HTTP response code. (e.g. 200)
$responseCode = $result->http_response_code;
# Obtain the total count of results provided by the query.
$responseBody = $result->http_response_body->total_count;
# Iterate through the results and echo the message IDs.
$logItems = $result->http_response_body->items;
for($logItems as $logItem){
echo $logItem->message_id . "n";
}
Si quieres empezar a usar el SDK hoy mismo, el código está disponible como repositorio público en Github (mailgun-php). Encontrarás la forma de hacer todo lo que puedes hacer con la API de Mailgun. Para ver más ejemplos de uso, consulta el archivo README del repositorio. Pero no nos detuvimos ahí… Hemos creado algunas utilidades dentro del SDK.
Message Builder
Crear un array de parámetros puede resultar difícil para algunas implementaciones de código, por lo que hemos incluido una clase que te permite hacer llamadas a métodos para compilar automáticamente un array de parámetros de mensajes bien formado.
Envío de un mensaje con el SDK de PHP de Mailgun y Message Builder:
# First, instantiate the SDK with your API credentials and define
your domain.
$mgClient = new Mailgun("key-example");
$domain = "example.com";
# Next, instantiate a Message Builder object from the SDK.
$msgBldr = $mgClient->MessageBuilder();
# Define the from address.
$msgBldr->setFromAddress("dwight@example.com",
array("first"=>"Dwight", "last" => "Schrute"));
# Define a to recipient.
$msgBldr->addToRecipient("michael@example.com",
array("first" => "Michael", "last" => "Scott"));
# Define a cc recipient.
$msgBldr->addCcRecipient("pam@example.com",
array("first" => "Pam", "last" => "Beesly"));
# Define the subject.
$msgBldr->setSubject("Help!");
# Define the body of the message.
$msgBldr->setTextBody("The printer is on fire.");
# Other Optional Parameters.
$msgBldr->addCampaignId("Sabre-Printer-Fire");
$msgBldr->addCustomHeader("Customer-Id", "12345");
$msgBldr->addAttachment("@/sabre.jpg");
$msgBldr->setDeliveryTime("tomorrow 8:00AM", "PST");
# Finally, send the message.
$mgClient->post('{$domain}/messages', $msgBldr->getMessage());
Para ver una lista de todas las funciones disponibles, echa un vistazo a la lista en Github.
Batch Message
Además de Message Builder, disponemos de Batch Message. Esta clase te permite compilar un mensaje y enviar un mensaje de plantilla por lotes a un máximo de 1000 destinatarios por envío. La ventaja de usar esta clase es que hace un seguimiento del recuento de destinatarios y enviará automáticamente el mensaje al punto de conexión cuando añadas el destinatario número 1000. Así podrás compilar tu mensaje y empezar a iterar a través de tu base de datos. Olvídate de enviar el mensaje, el SDK se encargará de enviarlo a la API cuando sea necesario.
Envío de un mensaje con el SDK de PHP de Mailgun y Batch Message:
# First, instantiate the SDK with your API credentials and define
your domain.
$mgClient = new Mailgun("key-example");
$domain = "example.com";
# Next, instantiate a Message Builder object from the SDK, pass in your
sending domain.
$batchMsg = $mgClient->BatchMessage($domain);
# Define the from address.
$batchMsg->setFromAddress("dwight@example.com",
array("first"=>"Dwight", "last" => "Schrute"));
# Define the subject.
$batchMsg->setSubject("Help!");
# Define the body of the message.
$batchMsg->setTextBody("The printer is on fire!");
# Next, let's add a few recipients to the batch job.
$batchMsg->addToRecipient("pam@example.com",
array("first" => "pam", "last" => "Beesly"));
$batchMsg->addToRecipient("jim@example.com",
array("first" => "Jim", "last" => "Halpert"));
$batchMsg->addToRecipient("andy@example.com",
array("first" => "Andy", "last" => "Bernard"));
...etc...etc...
// After 1,000 recipeints, Batch Message will automatically post your message
to the messages endpoint.
// Call finalize() to send any remaining recipients still in the buffer.
$batchMsg->finalize();
Como puedes comprobar, Batch Message en realidad amplía Message Builder. Todas las funciones disponibles en Message Builder lo están en Batch Message. Consulta la documentación completa en Github.
Opt-In Handler
Por último, hemos compilado un sencillo gestor de opt in doble para ayudarte a generar enlaces de opt in únicos. El gestor de opt in también utiliza nuestro servicio gratuito de validación de direcciones para validar la exactitud de las direcciones de email.
El flujo habitual para usar esta clase sería el siguiente:
El destinatario solicita suscribirse -> [Validar dirección del destinatario] -> [Generar enlace de opt in] -> [Enviar enlace de opt in al destinatario]
El destinatario hace clic en el enlace de opt in -> [Validar enlace de opt in] -> [Suscribir al usuario] -> [Enviar confirmación final]
Lo ideal es usar esta clase para los formularios de suscripción de tu sitio web, así que necesitarás un servidor web con acceso a internet para gestionar el clic en el enlace de validación.
Hacednos saber qué pensáis. ¿Hay algo más que te gustaría ver en el SDK? O algo que te encante. ¡Nos encantaría conocer tu opinión!
Felices envíos,
El equipo de Mailgun