Product

Das PHP-SDK: Das erste von vielen offiziellen Mailgun-SDKs

Das PHP-SDK erleichtert die Interaktion mit unserer API, da der üblicherweise für die Kommunikation mit einem HTTP-Webdienst erforderliche Boilerplate-Code entfällt. Weiterlesen –
Bild für Das PHP-SDK: Das erste von vielen offiziellen Mailgun-SDKs

Wir freuen uns, heute bekannt geben zu können, dass der Nachrichtenversand mit Mailgun für PHP-Entwicklungsteams jetzt noch einfacher ist. In den letzten Wochen haben wir intensiv an SDKs für die Mailgun-API gearbeitet. Das SDK erleichtert die Interaktion mit unserer API, da der üblicherweise für die Kommunikation mit einem HTTP-Webdienst erforderliche Boilerplate-Code entfällt. Heute veröffentlichen wir die PHP-Version des SDKs. Weitere Sprachen folgen in Kürze.

Falls Sie noch nicht mit einem SDK vertraut sind, sehen wir uns zunächst an, was erforderlich ist, um eine Nachricht mit der Standard-HTTP-CURL-Bibliothek für PHP zu versenden.

Nachricht mit CURL versenden:

                                

                                        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();
                                
                            

Der obige Code versendet eine Nachricht über die Mailgun-API. Dabei handelt es sich jedoch um viel Code, der zwar wichtig, aber auch komplex ist und ohne umfassende CURL-Expertise recht verwirrend sein kann.

Mit unserem neuen SDK konnten wir die erforderliche Code-Menge auf wenige Zeilen reduzieren.

Nachricht mit dem Mailgun-PHP-SDK versenden:

                                

                                        # 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.'));
                                
                            

Logs mit dem Mailgun-PHP-SDK abrufen:

                                

                                        # 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));
                                
                            

Alle HTTP-Aktionen geben ein Antwortobjekt zurück, das eine problemlose Interaktion ermöglicht.

                                

                                        # 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";
    }
                                
                            

Falls Sie das SDK gleich heute nutzen möchten, finden Sie den Code als öffentliches Repository auf GitHub (mailgun-php). Dort finden Sie Möglichkeiten, alles umzusetzen, was auch mit der Mailgun-API möglich ist. Weitere Anwendungsbeispiele finden Sie in der README-Datei im Repository. Aber das ist noch nicht alles … Wir haben einige Dienstprogramme in das SDK integriert.

Message Builder

Das Erstellen eines Arrays von Parametern kann für einige Code-Implementierungen schwierig sein. Daher haben wir eine Klasse integriert, mit der Sie Methodenaufrufe durchführen können, die automatisch ein ordnungsgemäß formatiertes Array von Nachrichtenparametern aufbauen.

Nachricht mit dem Mailgun-PHP-SDK und Message Builder versenden:

                                

                                        # 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());
                                
                            

Eine Liste aller verfügbaren Funktionen finden Sie in der Liste auf GitHub.

Batch Message

Zusätzlich zum Message Builder bieten wir Batch Message an. Mit dieser Klasse können Sie eine Nachricht erstellen und eine Vorlagennachricht in Batches an bis zu 1.000 Empfangsadressen pro Post senden. Der Vorteil dieser Klasse ist, dass die Anzahl der Empfangsadressen überwacht wird und die Nachricht automatisch an den Endpunkt gesendet wird, sobald Sie die 1.000. Adresse hinzugefügt haben. Das bedeutet, dass Sie Ihre Nachricht erstellen und mit der Iteration durch Ihre Datenbank beginnen können. Kümmern Sie sich nicht um den eigentlichen Versand der Nachricht – das SDK übernimmt bei Bedarf die Übermittlung an die API.

Nachricht mit dem Mailgun-PHP-SDK und Batch Message versenden:

                                

                                        # 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();
                                
                            

Wie Sie sehen, erweitert Batch Message den Message Builder. Alle im Message Builder verfügbaren Funktionen stehen auch in Batch Message zur Verfügung. Werfen Sie einen Blick in die vollständigen Dokumentation auf GitHub.

Opt-in-Handler

Zu guter Letzt haben wir einen einfachen Double-Opt-in-Handler entwickelt, mit dem Sie eindeutige Opt-in-Links generieren können. Der Opt-in-Handler nutzt auch unseren kostenlosen Dienst zur E-Mail-Adressvalidierung um die Genauigkeit der E-Mail-Adressen zu überprüfen.

Der typische Ablauf für die Verwendung dieser Klasse sieht wie folgt aus:
Abonnement wird angefragt -> [Empfangsadresse validieren] -> [Opt-in-Link generieren] -> [Opt-in-Link per E-Mail senden]
Opt-in-Link wird geklickt -> [Opt-in-Link validieren] -> [Abonnement bestätigen] -> [Abschließende Bestätigung senden]

Verwenden Sie diese Klasse am besten für die Anmeldeformulare auf Ihrer Website. Dafür benötigen Sie einen über das Internet zugänglichen Webserver, der den Klick auf den Validierungslink verarbeitet.

Lassen Sie uns wissen, was Sie denken. Gibt es noch etwas, das Sie sich im SDK wünschen würden? Oder etwas, das Ihnen besonders gefällt? Wir freuen uns über Ihr Feedback.

Viel Spaß beim Versenden,

Ihr Mailgun-Team