Alternative elenco e-mail con PHP utilizzo dell'API Mailgun's List

Cosa starai creando

Negli ultimi due anni ho incontrato varie frustrazioni sia con le applicazioni dell'elenco di e-mail open source che con i fornitori di servizi cloud a pagamento. In questo tutorial, ti guiderò attraverso la mia adozione di Mailgun.com, una soluzione economica che ho utilizzato con successo ora per due anni.

Il PHPList open source era sempre abbastanza complesso, e ho perso interesse quando hanno iniziato a revisionare la loro interfaccia utente in direzioni che sembravano più complicate, non meno. Nel mezzo della mia iniziativa di raccolta firme a Seattle, Mailchimp disabilitò la mia lista di e-mail, dicendo che non ottenevo correttamente i permessi dai membri, anche se ognuno di loro aveva dato personalmente alla nostra campagna la propria e-mail su moduli cartacei. Poi ho scoperto Mailgun e ho deciso di costruire la mia soluzione, che uso da allora.

Mailgun è un cannone di posta elettronica SaaS basato su cloud, come SendGrid. In realtà è gratuito per un massimo di 10.000 email al mese. Mailgun è incredibilmente potente e offre un'API ben documentata in una varietà di lingue popolari. Fornisce sia funzionalità di invio che di ricezione, l'ultima delle quali può essere abbastanza difficile da sviluppare da zero. Mentre Mailgun non fornisce modelli per newsletter HTML ricche, fornisce una piattaforma su cui è possibile costruire qualsiasi cosa.

Uso i servizi di elenchi di Mailgun per comunicare con gli amici e raggiungere le mie community sociali e anche per il business e il marketing. Per la maggior parte dei miei bisogni, le e-mail di trasmissione HTML semplici funzionano bene.

In questo tutorial, ti guiderò attraverso ListApp, un'applet che si basa sull'API Mailgun List. In un tutorial di follow-up, ti guiderò attraverso la creazione del tuo schema di liste email su PHP nativo e MySQL. Ogni approccio ha i suoi vantaggi.

Se si desidera principalmente trasmettere e si desidera utilizzare l'interfaccia utente Web basata su cloud di Mailgun per la gestione dell'elenco, ListApp potrebbe essere l'opzione migliore. Ecco un esempio dell'interfaccia utente basata su Web di Mailgun per la gestione degli elenchi:

Utilizzando ListApp, la copia master dell'elenco viene gestita nel cloud su Mailgun e sincronizzata localmente tramite l'API per l'installazione di ListApp.

Se si desidera creare elenchi di e-mail di gruppo o volere un controllo più preciso sulla propria e-mail e sulle esigenze di indirizzamento, è possibile imparare come compilare le funzionalità di elenco da zero. Nel prossimo tutorial, continueremo a fare affidamento sul motore e sull'API di Mailgun, ma gestiremo gli elenchi nell'applicazione anziché con l'API Elenco di Mailgun. Ciò evita anche la complessità della sincronizzazione.

The Open Source ListApp

ListApp fornisce un semplice front-end basato sul web per scenari comuni che è possibile utilizzare con le funzionalità di mailing list di Mailgun:

  • sincronizzare le liste e elencare i membri dal cloud di Mailgun
  • creazione, aggiornamento e cancellazione di elenchi
  • importare membri in una lista
  • invio di messaggi alle liste

È possibile installare ListApp su qualsiasi sistema basato su LAMP. Ho pubblicato la mia guida generica sull'installazione di un server LAMP Ubuntu come riferimento. L'app include istruzioni per la configurazione di ListApp su un server Ubuntu con 1 GB di RAM. Richiede PHP 5.x, MySQL 5.xe le librerie PEAR e cURL.

ListApp è scritto in Yii Framework per PHP. Non è necessario conoscere nulla sul framework Yii per eseguire l'applicazione. Se preferisci non usare Yii, puoi costruire sul componente Yiigun usato in ListApp. Yiigun.php è essenzialmente un file di classe PHP con metodi e aiutanti per sfruttare l'SDK Mailgun Mailing List.

Per ottenere le chiavi API per il file delle impostazioni è necessario registrarsi per un account Mailgun gratuito (o di livello superiore). Se hai un account a pagamento, dovrai aggiungere i tuoi domini e creare le impostazioni DNS per utilizzarli. Se usi un account gratuito, il tuo dominio sarà yourchoice.mailgun.org. Pertanto, gli indirizzi della tua lista possono essere [email protected]. Le chiavi API di Mailgun verranno mostrate nella home page del pannello di controllo.

Come usare l'API Mailgun List

L'uso dell'API Mailing List di Mailgun è molto semplice. Mailgun fornisce la propria documentazione API Mailing List per aiutarci. Puoi esaminare come ListApp utilizza l'API Mailgun nel nostro componente Yiigun.php. ListApp utilizza l'SDK PHP Mailgun per interagire con Mailgun.

Inizializzazione dell'SDK PHP di Mailgun

Assicurati di seguire le istruzioni per la configurazione delle chiavi API durante l'installazione. Ogni volta che viene utilizzata la classe Yiigun, viene chiamato il costruttore, creando un'inizializzazione sicura con l'API di Mailgun:

function __construct () // initialize mailgun connection $ this-> mg = new Mailgun (Yii :: app () -> params ['mailgun'] ['api_key']); 

Creare una lista

Puoi creare nuove mailing list usando le opzioni di menu a destra di ListApp. Ogni elenco richiede un nome, un elenco di indirizzi e-mail e una descrizione. Quando crei un nuovo elenco, ListApp carica anche l'elenco e le relative impostazioni su Mailgun. È inoltre possibile aggiornare le proprietà per qualsiasi elenco.

Ecco come creiamo una nuova lista:

funzione pubblica listCreate ($ newlist) $ result = $ this-> mg-> post ("liste", array ('indirizzo' => $ newlist-> indirizzo, 'nome' => $ newlist-> nome, 'descrizione '=> $ newlist-> description,' access_level '=> $ newlist-> access_level)); restituire $ result-> http_response_body; 

Ecco come aggiorniamo le proprietà della mailing list:

 funzione pubblica listUpdate ($ existing_address, $ model) $ result = $ this-> mg-> put ("liste /".$ existing_address, array ('indirizzo' => $ modello-> indirizzo, 'nome' => $ model-> name, 'description' => $ model-> description, 'access_level' => $ model-> access_level)); restituire $ result-> http_response_body; 

Importazione di membri nell'elenco

Puoi importare nuovi membri in qualsiasi elenco da ListApp. Usiamo le librerie di analisi dell'elenco email di PEAR per questa funzione. Puoi incollare qualsiasi elenco di indirizzi email nel modulo Nome personale , separati da virgole o nuove righe. ListApp aggiungerà i membri localmente e li caricherà su Mailgun.com.

Per aggiungere membri in blocco, per prima cosa creiamo una stringa JSON dei nuovi membri da caricare: ecco un esempio di codice che potresti utilizzare.

$ json_upload = '[' foreach ($ indirizzi come $ i) $ json_upload. = ''; $ json_upload. = '"nome": "'. $ i-> nome. '",'; $ json_upload. = '"indirizzo": "'. $ i-> indirizzo. '"' '; . $ Json_upload = ',';  $ json_upload. = ']';

Quindi chiamiamo la funzione di caricamento collettivo con questa stringa JSON:

membro della funzione pubblicaBulkAdd ($ list = ", $ json_str =") $ result = $ this-> mg-> post ("liste /".$ lista." / members.json ", array ('membri' => $ json_str, 'subscribed' => true, 'upsert' => 'yes')); restituire $ result-> http_response_body; 

Puoi anche aggiungere singoli membri agli elenchi, usando il Aggiungi un membro opzione di menu.

Invio di un messaggio

È possibile inviare un messaggio a qualsiasi elenco utilizzando il menu a destra. Consegniamo il messaggio in uscita a Mailgun come qualsiasi altro messaggio. Il $ a l'indirizzo è in realtà l'indirizzo della mailing list Mailgun, come ad esempio [email protected]:

funzione pubblica send_simple_message ($ to = ", $ subject =", $ body = ", $ from =") if ($ from == ") $ from = Yii :: app () -> params ['supportEmail'] ; $ domain = Yii :: app () -> params ['mail_domain']; $ result = $ this-> mg-> sendMessage ($ domain, array ('from' => $ from, 'a' => $ a, 'subject' => $ subject, 'text' => $ body,)); return $ result-> http_response_body;

Mailgun gestisce quindi la consegna del messaggio ai singoli destinatari.

Qui puoi vedere altri esempi dell'API Mailgun List.

Puoi anche utilizzare alcune delle variabili generiche del destinatario Mailgun per includere saluti personali, come ad esempio Ciao % Recipient_fname% (consultare la documentazione Template Variables).

Sincronizzazione degli elenchi e dei membri dell'elenco

Puoi anche gestire le tue liste attraverso l'interfaccia utente web di Mailgun. Quindi, quando apri ListApp, fai clic su Sincronizzare opzione. Questo preleverà copie di tutte le mailing list esistenti su Mailgun e scaricherà tutti i loro membri nel database locale. In sostanza sincronizza la tua mailing list dal sito Mailgun.com. Questa opzione non si sincronizza.

Ecco il fetchLists funzione. L'uso dell'SDK PHP di Mailgun lo rende piuttosto semplice:

 public function fetchLists () $ result = $ this-> mg-> get ("liste"); restituire $ result-> http_response_body; 

Ecco come recuperiamo i membri:

funzione pubblica fetchListMembers ($ indirizzo) $ result = $ this-> mg-> get ("liste /".$ indirizzo. '/ membri'); restituire $ result-> http_response_body; 

Estendere ListApp

L'attuale versione di ListApp parla con Mailgun in tempo reale e non ha una gestione degli errori estesa. A lungo termine, sarebbe opportuno aggiungere richieste API in coda asincrone.

Oltre alla documentazione dell'API Mailing List di Mailgun (che include esempi in cURL, Ruby, PHP, Python, Java e C #), è possibile rivedere, estrarre e adattare il file Yiigun.php e le sue funzioni per la propria applicazione o framework PHP..

Se non si utilizza Yii, è necessario utilizzare Composer per installare l'SDK per le istruzioni di installazione di Mailgun.

Cosa hai imparato

Ora disponi di un'applet che può creare e gestire elenchi basati su cloud tramite l'API Mailgun e utilizzarli per tenere informati e aggiornati i tuoi amici, colleghi e clienti. Nella seconda parte, ti mostrerò come creare liste email in PHP e MySQL. Continueremo a fare affidamento sul motore e sull'API di Mailgun, ma gestiremo gli elenchi nell'applicazione anziché con l'API Elenco di Mailgun.

Non esitate a postare le vostre domande e commenti qui sotto. Puoi anche raggiungermi su Twitter @reifman o mandarmi un'email direttamente. Segui la pagina dei miei Tuts + istruttore per vedere gli articoli futuri in questa serie.

Link correlati

  • Mailgun.com
  • Documentazione API Mailgun List
  • Come rendere l'e-mail una parte potente della tua applicazione Web con SendGrid (Tuts +)
  • Introduzione al framework Yii (Tuts +)