E-mail listează alternative cu PHP Folosind API Lista Mailgun

Ce veți crea

În ultimii ani, am întâlnit diverse frustrări atât cu privire la aplicațiile cu listă de e-mail cu sursă deschisă, cât și cu furnizorii plătiți în cloud. În acest tutorial, vă voi îndruma prin adoptarea mea de Mailgun.com, o soluție economică pe care am folosit-o cu succes acum doi ani.

Open source PHPList a fost întotdeauna destul de complexă și am pierdut interesul când au început să-și revizuiască interfața cu utilizatorul în direcții care păreau mai complicate, nu mai puțin. În mijlocul campaniei de colectare a semnăturilor inițiale din Seattle, Mailchimp mi-a dezactivat lista de e-mailuri, spunând că nu am obținut în mod corespunzător permisiuni din partea membrilor - chiar dacă fiecare a dat personală campaniei noastre e-mailul pe formulare pe suport de hârtie. Apoi am descoperit Mailgun și am decis să-mi construiesc propria soluție, pe care am folosit-o de atunci.

Mailgun este un canal de e-mail de tip SaaS bazat pe nor, cum ar fi SendGrid. Este de fapt gratuit până la 10.000 de e-mailuri pe lună. Mailgun este incredibil de puternic și oferă un API bine documentat într-o varietate de limbi populare. Oferă atât funcții de trimitere, cât și recepție, dintre care ultima poate fi dificil de dezvoltat de la zero. În timp ce Mailgun nu furnizează șabloane pentru buletine informative HTML bogate, acesta oferă o platformă pe care puteți construi ceva.

Folosesc serviciile de poștă electronică ale Mailgun pentru a comunica cu prietenii și pentru a ajunge la comunitățile mele sociale, precum și pentru afaceri și marketing. Pentru majoritatea nevoilor mele, e-mailurile simple de difuzare HTML funcționează bine.

În acest tutorial, vă voi îndruma prin ListaApp, un applet care se bazează pe API-ul Listă Mailgun. Într-un tutorial de urmărire, vă voi îndruma prin construirea propriei scheme de liste de e-mail pe PHP și MySQL nativ. Fiecare abordare are avantaje proprii.

Dacă intenționați în primul rând să difuzați și doriți să utilizați interfața de utilizator Web-based bazată pe cloud a lui Mailgun pentru gestionarea listei, ListApp poate fi cea mai bună opțiune. Iată un exemplu de interfață de utilizator bazată pe web a lui Mailgun pentru gestionarea listelor:

Folosind ListApp, copia principală a listei dvs. este menținută în cloud la Mailgun și sincronizată local prin intermediul API-ului pentru instalarea ListApp.

Dacă doriți să creați liste de e-mail de grup sau doriți un control mai precis asupra adreselor dvs. de e-mail și nevoilor dvs. de adresare, atunci este posibil să doriți să învățați cum să creați caracteristici de listă de la zero. În tutorialul următor, vom continua să ne bazăm pe motorul și API-ul Mailgun, dar vom gestiona liste în aplicație în loc de cu API-ul Lista Mailgun. Acest lucru evită, de asemenea, complexitatea sincronizării.

Lista OpenApp pentru Open Source

ListApp oferă un simplu front-end bazat pe web pentru scenariile obișnuite pe care le-ați putea folosi cu funcțiile de corespondență ale Mailgun:

  • sincronizarea listelor și lista membrilor din cloudul Mailgun
  • crearea, actualizarea și ștergerea listelor
  • importând membri într-o listă
  • trimiterea de mesaje către liste

Puteți instala ListApp pe orice sistem bazat pe LAMP. Am postat ghidul meu generic pentru instalarea unui server Ubuntu LAMP pentru referință. Aplicația include instrucțiuni pentru configurarea ListApp pe un server Ubuntu cu memorie RAM de 1 GB. Aceasta necesită PHP 5.x, MySQL 5.x și bibliotecile PEAR și cURL.

ListApp este scris în cadrul Yii pentru PHP. Nu este nevoie să știți nimic despre cadrul Yii pentru a rula aplicația. Dacă preferați să nu folosiți Yii, puteți construi pe componenta Yiigun folosită în ListApp. Yiigun.php este, în esență, un fișier de clasă PHP cu metode și ajutoare pentru mobilizarea Mailkun Mailing List SDK.

Va trebui să vă înscrieți pentru un cont gratuit (sau la nivel superior) Mailgun pentru a obține cheile API pentru fișierul de setări. Dacă aveți un cont plătit, va trebui să adăugați domeniile și să creați setări DNS pentru a le utiliza. Dacă utilizați un cont gratuit, domeniul dvs. va fi yourchoice.mailgun.org. Prin urmare, adresele dvs. de listă pot fi [email protected]. Tastele API ale Mailgun vor fi afișate pe pagina principală a panoului de control.

Cum se utilizează API-ul Lista Mailgun

Utilizarea API-ului List Mail Mailing List este foarte simplă. Mailgun furnizează propria documentație API pentru lista de corespondență pentru a ne ajuta. Puteți să consultați modul în care ListApp utilizează API-ul Mailgun în componenta noastră Yiigun.php. ListApp utilizează SDK-ul Mailgun PHP pentru a interacționa cu Mailgun.

Inițializarea fișierului SDK Mailgun PHP

Asigurați-vă că urmați instrucțiunile pentru configurarea cheilor API în timpul instalării. Ori de câte ori se utilizează clasa Yiigun, se numește constructorul, creând o inițializare sigură cu API-ul lui Mailgun:

funcția __construct () // inițializați conexiunea mailgun $ this-> mg = noul Mailgun (Yii :: app () -> params ['mailgun'] ['api_key']); 

Crearea unei liste

Puteți crea noi liste de discuții utilizând opțiunile de meniu din partea dreaptă a ListApp. Fiecare listă necesită un nume, o listă de e-mail și o descriere. Când creați o listă nouă, ListApp încarcă lista și setările acesteia și la Mailgun. De asemenea, puteți actualiza proprietățile pentru orice listă.

Iată cum vom crea o listă nouă:

lista de funcții publiceCreați ($ newlist) $ result = $ this-> mg-> post ("lists", array ('address' => $ newlist-> address, 'name' => $ newlist-> name '=> $ newlist-> description,' access_level '=> $ newlist-> access_level)); retur $ rezultat-> http_response_body; 

Iată cum actualizăm proprietățile listei de adrese:

 funcția publică listUpdate ($ existing_address, $ model) $ result = $ this-> mg-> put ("lists /".$ adresa_existentă, array ('adresa' => $ model-> model-> nume, "descriere" => $ model-> descriere, "access_level" => $ model-> access_level)); retur $ rezultat-> http_response_body; 

Importul membrilor pe listă

Puteți importa noi membri în orice listă din ListApp. Folosim bibliotecile de parcurgere a listei de e-mailuri a PEAR pentru această caracteristică. Puteți să inserați în orice listă de adrese de e-mail în formular Numele personal , separate prin virgule sau linii noi. ListApp va adăuga membrii local și le va încărca pe Mailgun.com.

Pentru a adăuga membrii în bloc, mai întâi vom crea un șir JSON al noilor membri pentru a încărca - aici este un exemplu de cod pe care îl puteți utiliza.

$ json_upload = '[' foreach ($ adrese ca $ i) $ json_upload. = ''; $ json_upload. = '' nume '': ''. $ i-> nume. '', '; $ json_upload. = '' adresa '': ''. $ i-> adresa. '' '; . $ Json_upload = '';  $ json_upload. = ']';

Apoi numim funcția de încărcare în bloc cu acest șir JSON:

funcția publică membruBulkAdd ($ list = ", $ json_str =") $ rezultat = $ this-> mg-> post ("lista /".$ list." / members.json ', array (' members '=> $ json_str, 'subscribed' => true, 'upsert' => 'da')); retur $ rezultat-> http_response_body; 

Puteți adăuga și membrii individuali în liste, utilizând Adăugați un membru opțiune de meniu.

Trimiterea unui mesaj

Puteți trimite un mesaj către orice listă utilizând meniul din dreapta. Livrăm mesajul de ieșire către Mailgun ca orice alt mesaj. $ la adresa este de fapt adresa de mailing mailing list, cum ar fi [email protected]:

funcția publică send_simple_message ($ to = ", $ subject =", $ body = ", $ din =") if ($ din == ") $ from = Yii :: app () -> params ['supportEmail'] ; $ domain = Yii :: app () -> params ['mail_domain']; $ result = $ this-> mg-> sendMessage ($ domeniu, array la, 'subiect' => $ subiect, 'text' => $ corp,)); return $ result-> http_response_body;;

Mailgun gestionează apoi livrarea mesajului către destinatari individuali.

Puteți vedea mai multe exemple de API din lista Mailgun în acțiune aici.

Puteți utiliza, de asemenea, unele dintre variabilele destinatarului generic Mailgun pentru a include salutări personale, cum ar fi Hi % Recipient_fname% (a se vedea documentația privind variabilele de șablon).

Sincronizarea listelor și a membrilor listei

De asemenea, puteți gestiona listele prin interfața de utilizator web a portalului Mailgun. Apoi, când deschideți ListApp, faceți clic pe Sincroniza opțiune. Aceasta va aduce copii ale tuturor listelor de discuții existente la Mailgun și va descărca toți membrii lor în baza de date locală. În esență, sincronizează lista dvs. de corespondență de pe site-ul Mailgun.com. Această opțiune nu se sincronizează.

Iată-l fetchLists funcţie. Folosirea SDK-ului Mailgun PHP face acest lucru simplu:

 funcția publică fetchLists () $ result = $ this-> mg-> get ("liste"); retur $ rezultat-> http_response_body; 

Iată cum îi aducem pe membri:

funcția publică fetchListMembers ($ address) $ rezultat = $ this-> mg-> get ("lists /".$ address. '/ members'); retur $ rezultat-> http_response_body; 

Extinderea funcției ListApp

Versiunea curentă a ListApp vorbește cu Mailgun în timp real și nu are o gestionare a erorilor extinse. Pe termen lung, ar fi bine să adăugați solicitări API asincrone.

În plus față de documentația API a Mailgun (care include exemple în cURL, Ruby, PHP, Python, Java și C #), puteți să examinați, să extrageți și să adaptați fișierul Yiigun.php și funcțiile sale pentru propria aplicație sau cadru PHP.

Dacă nu utilizați Yii, va trebui să utilizați compozitorul pentru a instala SDK pe instrucțiunile de instalare ale lui Mailgun.

Ce ai învățat

Acum aveți un applet care poate construi și gestiona liste bazate pe cloud prin API-ul Mailgun și le puteți utiliza pentru a-ți păstra prietenii, colegii și clienții informații și actualizări. În partea a doua, vă voi arăta cum să creați liste de e-mail nativ în PHP și MySQL. Vom continua să ne bazăm pe motorul și pe API-ul Mailgun, dar vom gestiona liste în aplicație în loc de cu API-ul Lista Mailgun.

Vă rugăm să nu ezitați să postați întrebările și comentariile dvs. de mai jos. Puteți să mă contactați și pe Twitter @reifman sau să mă trimiteți direct prin e-mail. Urmați pagina mea Tuts + instructor pentru a vedea articole viitoare din această serie.

Link-uri conexe

  • Mailgun.com
  • Documentația API pentru lista de documente Mailgun
  • Cum de a face un e-mail o parte puternică a aplicației dvs. Web cu SendGrid (Tuts +)
  • Introducere în Cadrul Yii (Tuts +)
Cod