Product

La gema de Ruby oficial de Mailgun ya está aquí

¡Hemos añadido Ruby a nuestra lista de SDK! ¿Quieres saber más sobre cómo enviar emails mediante Mailgun con Ruby? Más información...
Imagen para 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!