Product

Le gem Ruby officiel de Mailgun est disponible

Ruby a été ajouté à notre liste de SDK ! Vous souhaitez en savoir plus sur la façon d'envoyer un email via Mailgun avec Ruby ? En savoir plus...
Image pour Le gem Ruby officiel de Mailgun est disponible

Aujourd’hui, nous sommes ravis d’annoncer que nous avons ajouté Ruby à la liste des SDK Mailgun officiels. Tout comme pour notre SDK PHP, nous avons inclus des utilitaires tels que Message Builder, Batch Sending et Opt-in Handler pour simplifier les tâches courantes de développement. Nous sommes impatients de collaborer avec la communauté Ruby pour améliorer le SDK au fil du temps. Vous pouvez accéder au SDK sur Github.

Pour les personnes qui ne connaissent pas bien les SDK, passons d’abord en revue ce qui est nécessaire pour envoyer un message à l’aide de la bibliothèque Ruby HTTPS standard.

Aujourd’hui, nous sommes ravis d’annoncer que nous avons ajouté Ruby à la liste des SDK Mailgun officiels. Tout comme pour notre SDK PHP, nous avons inclus des utilitaires tels que Message Builder, Batch Sending et Opt-in Handler pour simplifier les tâches courantes de développement. Nous sommes impatients de collaborer avec la communauté Ruby pour améliorer le SDK au fil du temps. Vous pouvez accéder au SDK sur Github.

Pour les personnes qui ne connaissent pas bien les SDK, passons d’abord en revue ce qui est nécessaire pour envoyer un message à l’aide de la bibliothèque Ruby HTTPS standard.

Envoi d’un message :

                                

                                    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)  
                                
                            

Le code ci-dessus enverra un message à l’aide de l’API de Mailgun. Cependant, il contient beaucoup de code qui, bien qu’important, est compliqué et plutôt confus.

Grâce à notre nouveau SDK, nous avons réussi à réduire la quantité de code requise à seulement quelques lignes.

Envoi d’un message avec le SDK 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
                                
                            

Obtention d’événements avec le SDK 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
                                
                            

Toutes les actions HTTP renvoient un objet de réponse, qui peut être converti en hash ou en YAML.

Supposons que nous souhaitions obtenir les 25 résultats suivants, à l’aide de la même requête. Il suffit d’émettre « next » sur l’objet « mg_events ». Le SDK garde une trace des liens de pagination de l’Events API.

result = mg_events.next

Remarque : si l’ensemble de résultats est inférieur à votre limite, ne vous inquiétez pas. Une requête « next » ultérieure renverra les 25 résultats suivants depuis la dernière fois que vous avez appelé « next » ou « get ».

Message Builder

La création d’un tableau de paramètres peut s’avérer difficile pour certaines implémentations de code. Nous avons donc inclus une classe qui vous permet d’effectuer des appels de méthode qui construisent automatiquement un tableau de paramètres de message correctement formé.

Envoi d’un message avec le SDK Ruby de Mailgun + 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
                                
                            

Pour obtenir une liste de toutes les fonctions disponibles, consultez la liste sur Github.

Batch Message

En plus de Message Builder, nous proposons Batch Message. Cette classe vous permet de créer un message et de soumettre un modèle de message par lots, jusqu’à 1 000 destinataires par envoi. L’avantage de cette classe est que le décompte des destinataires est surveillé et soumettra automatiquement le message au point de terminaison lorsque vous aurez ajouté le 1 000e destinataire. Cela signifie que vous pouvez créer votre message et commencer à itérer dans votre base de données. Oubliez l’envoi du message, le SDK se chargera de la publication sur l’API lorsque cela sera nécessaire.

Envoi d’un message avec le SDK Ruby de Mailgun + 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
                                
                            

Comme vous pouvez le constater, Batch Message étend en fait Message Builder. Toutes les fonctions disponibles dans Message Builder sont disponibles dans Batch Message. Consultez la documentation complète sur Github.

Opt-In Handler

Enfin, nous avons créé un gestionnaire de double opt-in simple pour vous aider à générer des liens d’opt-in uniques. Le gestionnaire d’opt-in utilise également notre service de validation d’adresses pour valider l’exactitude des adresses email.

Le flux typique d’utilisation de cette classe serait le suivant :
Le destinataire demande à s’inscrire -> [Valider l’adresse du destinataire] -> [Générer un lien d’opt-in] -> [Envoyer le lien d’opt-in au destinataire par email]
Le destinataire clique sur le lien d’opt-in -> [Valider le lien d’opt-in] -> [Inscrire l’utilisateur] -> [Envoyer la confirmation finale]

Il est préférable d’utiliser cette classe pour les formulaires d’abonnement de votre site Web, vous aurez donc besoin d’un serveur Web accessible sur Internet pour gérer le clic sur le lien de validation.

Chaque implémentation étant plutôt unique, consultez la documentation Github pour obtenir des exemples d’utilisation de cette classe.

Faites-nous part de ce que vous en pensez. Y a-t-il autre chose que vous aimeriez voir dans le SDK ? Ou quelque chose que vous adorez. Nous serions ravis de connaître votre avis !

Bons envois !