Î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.
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:
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.
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.
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']);
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;
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.
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).
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;
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.
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.