Product
La gema de Ruby oficial de Mailgun ya está aquí
Hoy nos complace anunciar que hemos añadido Ruby a la lista de SDK oficiales de Mailgun. Al igual que en nuestro SDK de PHP, hemos incluido algunas utilidades como Message Builder, el envío por lotes y Opt-in Handler para simplificar las tareas de desarrollo más comunes. Tenemos muchas ganas de colaborar con la comunidad de Ruby para mejorar el SDK con el tiempo. Puedes acceder al SDK en Github.
Para quienes no estén familiarizados con un SDK, repasemos primero qué hace falta para enviar un mensaje usando la biblioteca HTTPS de Ruby estándar.
Hoy nos complace anunciar que hemos añadido Ruby a la lista de SDK oficiales de Mailgun. Al igual que en nuestro SDK de PHP, hemos incluido algunas utilidades como Message Builder, el envío por lotes y Opt-in Handler para simplificar las tareas de desarrollo más comunes. Tenemos muchas ganas de colaborar con la comunidad de Ruby para mejorar el SDK con el tiempo. Puedes acceder al SDK en Github.
Para quienes no estén familiarizados con un SDK, repasemos primero qué hace falta para enviar un mensaje usando la biblioteca HTTPS de Ruby estándar.
Enviar un mensaje:
require "net/https"
require "uri"
uri = URI.parse("https://api.mailgun.net/v2/samples.mailgun.org/messages")
data = {'to' => 'joe.sample@example.com',
'from' => 'bill.sample@example.com',
'subject' => 'Hello from Ruby!',
'text' => 'Sent via Mailgun.'}
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri.request_uri)
request.basic_auth("api", "key-3ax6xnjp29jd6fds4gc373sgvjxteol0")
request.set_form_data(data)
response = http.request(request)
Lo anterior enviará un mensaje utilizando la API de Mailgun. Sin embargo, hay un montón de código que, aunque es importante, resulta complicado y bastante confuso.
Con nuestro nuevo SDK, hemos logrado reducir el código necesario a tan solo unas líneas.
Enviar un mensaje con el SDK de Ruby de Mailgun:
require 'mailgun'
# First, instantiate the Mailgun Client with your API key
mg_client = Mailgun::Client.new "your-api-key"
# Define your message parameters
message_params = {:from => 'bob@sending_domain.com',
:to => 'sally@example.com',
:subject => 'The Ruby SDK is awesome!',
:text => 'It is really easy to send a message!'}
# Send your message through the client
mg_client.send_message "sending_domain.com", message_params
Obtener eventos con el SDK de Ruby de Mailgun:
# First, instantiate the Client, then instantiate the Events helper.
mg_client = Mailgun::Client.new("your-api-key")
mg_events = Mailgun::Events.new(mg_client, "your-domain")
result = mg_events.get({'limit' => 25,
'recipient' => 'joe@example.com'})
result.to_h['items'].each do | item |
# outputs "Delivered - 20140509184016.12571.48844@example.com"
puts "#{item['event']} - #{item['message']['headers']['message-id']}"
end
Todas las acciones HTTP devuelven un objeto de respuesta, que se puede convertir a hash o YAML.
Supongamos que queremos obtener los siguientes 25 resultados utilizando la misma consulta. Solo tienes que emitir “next” en el objeto “mg_events”. El SDK realiza un seguimiento de los enlaces de paginación de la Events API.
result = mg_events.next
Nota: Si el conjunto de resultados es inferior a tu límite, no te preocupes. Una consulta posterior de “next” devolverá los siguientes 25 resultados desde la última vez que llamaste a “next” o “get”.
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.
Enviar un mensaje con el SDK de Ruby de Mailgun y Message Builder:
# First, instantiate the Mailgun Client with your API key
mg_client = Mailgun::Client.new("your-api-key")
mb_obj = Mailgun::MessageBuilder.new()
# Define the from address
mb_obj.set_from_address("me@example.com", {"first"=>"Ruby", "last" => "SDK"});
# Define a to recipient
mb_obj.add_recipient(:to, "john.doe@example.com", {"first" => "John", "last" => "Doe"});
# Define a cc recipient
mb_obj.add_recipient(:cc, "sally.doe@example.com", {"first" => "Sally", "last" => "Doe"});
# Define the subject
mb_obj.set_subject("A message from the Ruby SDK using Message Builder!");
# Define the body of the message
mb_obj.set_text_body("This is the text body of the message!");
# Campaign and other headers
mb_obj.add_campaign_id("My-Awesome-Campaign");
mb_obj.add_custom_parameter("h:Customer-Id", "12345");
# Attach a file and rename it
mb_obj.add_attachment("/path/to/file/receipt_123491820.pdf", "Receipt.pdf");
# Schedule message in the future
mb_obj.set_delivery_time("tomorrow 8:00AM", "PST");
# Finally, send your message using the client
result = mg_client.send_message("sending_domain.com", mb_obj)
puts result.body.to_s
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.
Enviar un mensaje con el SDK de Ruby de Mailgun y Batch Message:
# First, instantiate the Mailgun Client with your API key
mg_client = Mailgun::Client.new("your-api-key")
mb_obj = Mailgun::BatchMessage.new(@mb_client, "example.com")
# Define the from address
mb_obj.set_from_address("me@example.com",
{"first"=>"Ruby",
"last" => "SDK"});
# Define the subject
mb_obj.set_subject("A message from the Ruby SDK using Message Builder!");
# Define the body of the message
mb_obj.set_text_body("Hello %recipient.first%,
This is the text body of the message
using recipient variables!
If you needed to reference the account-id
recipient variable, you could do it like
this: %account-id%.");
# Add several recipients
mb_obj.add_recipient(:to, "john.doe@example.com",
{"first" => "John",
"last" => "Doe",
"account-id" => 1234});
mb_obj.add_recipient(:to, "jane.doe@example.com",
{"first" => "Jane",
"last" => "Doe",
"account-id" => 5678});
mb_obj.add_recipient(:to, "bob.doe@example.com",
{"first" => "Bob",
"last" => "Doe",
"account-id" => 91011});
... etc ...
mb_obj.add_recipient(:to, "sally.doe@example.com",
{"first" => "Sally",
"last" => "Doe",
"account-id" => 121314});
# Send your message through the client
message_ids = mg_client.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 usa nuestro servicio 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.
Dado que cada implementación será bastante única, consulta la documentación de Github para ver ejemplos de uso de esta clase.
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!
¡Feliz envío!