E-postlistealternativer med PHP Bruke Mailgun's List API

Hva du skal skape

I løpet av de siste par årene har jeg gått inn i ulike frustrasjoner med både åpen kildekode-e-postlisteapplikasjoner og betalte skybaserte tilbydere. I denne veiledningen vil jeg veilede deg gjennom vedtaket av Mailgun.com, en økonomisk løsning jeg har brukt med hell nå i to år.

Open Source PHPList var alltid ganske komplisert, og jeg mistet interessen da de begynte å overhale deres brukergrensesnitt i retninger som virket mer kompliserte, ikke mindre. I midten av initiativet mitt for signaturinnsamlingskampanjen i Seattle, slettet Mailchimp min e-postliste og sa at jeg ikke fikk riktig tillatelser fra medlemmer, selv om hver personlig hadde gitt kampanjen sin e-post på papirformularer. Da oppdaget jeg Mailgun og bestemte meg for å bygge min egen løsning, som jeg har brukt siden.

Mailgun er en skybasert SaaS e-postkanon, som SendGrid. Det er faktisk gratis for opptil 10 000 e-poster per måned. Mailgun er utrolig kraftig og tilbyr en godt dokumentert API på en rekke populære språk. Den sørger for både send og mottak, og sistnevnte kan være ganske vanskelig å utvikle fra bunnen av. Mens Mailgun ikke gir maler for rike HTML nyhetsbrev, gir det en plattform hvor du kan bygge noe.

Jeg bruker Mailguns listetjenester til å kommunisere med venner og nå ut til mine sosiale lokalsamfunn, og også for forretnings- og markedsføringstrekning. For de fleste av mine behov, fungerer enkle HTML-kringkastingsemails godt.

I denne veiledningen skal jeg veilede deg gjennom ListApp, en applet som bygger på Mailgun List API. I en oppfølgingstutorial vil jeg veilede deg gjennom å bygge ditt eget e-postliste-skjema på innfødt PHP og MySQL. Hver tilnærming har sine egne fordeler.

Hvis du primært ønsker å kringkaste og vil bruke Mailguns eget skybaserte webgrensesnitt for å administrere listen, kan ListApp være det beste alternativet. Her er et eksempel på Mailguns nettbaserte brukergrensesnitt for å administrere lister:

Ved hjelp av ListApp opprettholdes hovedkopien av listen i skyen ved Mailgun og synkroniseres lokalt via API til installasjonen av ListApp.

Hvis du kanskje vil bygge gruppe e-postlister eller ønsker mer finkornet kontroll over dine e-postadresser og adresseringsbehov, kan du kanskje lære å bygge listefunksjoner fra bunnen av. I neste veiledning vil vi fortsatt stole på Mailgun-motoren og API, men vi vil administrere lister i applikasjonen i stedet for med Mailgun's List API. Dette unngår også kompleksiteten til synkronisering.

Open Source ListApp

ListApp gir en enkel nettbasert frontend for vanlige scenarier du kan bruke med Mailguns epostlistefunksjoner:

  • synkronisere lister og liste medlemmer fra Mailgun-skyen
  • opprette, oppdatere og slette lister
  • importerer medlemmer til en liste
  • sende meldinger til lister

Du kan installere ListApp på et LAMP-basert system. Jeg har lagt ut min generiske guide for å installere en Ubuntu LAMP server for referanse. Appen inneholder instruksjoner for å sette opp ListApp på en Ubuntu-server med 1 GB RAM. Det krever PHP 5.x, MySQL 5.x og PEAR og cURL biblioteker.

ListApp er skrevet i Yii Framework for PHP. Du trenger ikke å vite noe om Yii-rammen for å kjøre programmet. Hvis du foretrekker å ikke bruke Yii, kan du bygge på Yiigun-komponenten som brukes i ListApp. Yiigun.php er i hovedsak en PHP-klassefil med metoder og hjelpere for å utnytte Mailgun Mailing List SDK.

Du må registrere deg for en gratis (eller høyere nivå) Mailgun-konto for å få API-nøklene dine for innstillingsfilen. Hvis du har en betalt konto, må du legge til domenene dine og opprette DNS-innstillinger for å bruke dem. Hvis du bruker en gratis konto, blir domenet ditt yourchoice.mailgun.org. Derfor kan adressene dine være [email protected]. Dine Mailgun API-tastene vises på kontrollpanelens hjemmeside.

Slik bruker du Mailgun List API

Bruke Mailgun Mailing List API er veldig grei. Mailgun tilbyr sin egen Mailing List API dokumentasjon for å hjelpe oss. Du kan se hvordan ListApp bruker Mailgun API i vår Yiigun.php-komponent. ListApp bruker Mailgun PHP SDK til å samhandle med Mailgun.

Initialisering av Mailgun PHP SDK

Husk å følge instruksjonene for å konfigurere API-nøklene dine under installasjonen. Når Yiigun-klassen brukes, kalles konstruktøren, og skaper en sikker initialisering med Mailgun API:

funksjon __construct () // initialiser mailgun-tilkobling $ this-> mg = ny Mailgun (Yii :: app () -> params ['mailgun'] ['api_key']); 

Opprette en liste

Du kan opprette nye adresselister ved å bruke menyalternativene til høyre for ListApp. Hver liste krever et navn, liste e-postadresse og beskrivelse. Når du oppretter en ny liste, laster ListApp opp listen og dens innstillinger til Mailgun også. Du kan også oppdatere egenskapene for en liste.

Slik lager vi en ny liste:

public function listCreate ($ newlist) $ result = $ this-> mg-> post ("lister", array ('adresse' => $ nyliste-> adresse, 'navn' => $ nyliste-> navn, 'beskrivelse '=> $ newlist-> beskrivelse,' access_level '=> $ newlist-> access_level)); returnere $ result-> http_response_body; 

Slik oppdaterer du adresselisteegenskaper:

 public function listUpdate ($ existing_address, $ model) $ result = $ this-> mg-> put ("lister /".$ existing_address, array ('adresse' => $ modell-> adresse, 'navn' => $ modell-> navn, 'beskrivelse' => $ modell-> beskrivelse, 'access_level' => $ model-> access_level)); returnere $ result-> http_response_body; 

Importerer medlemmer til listen

Du kan importere nye medlemmer til en liste fra ListApp. Vi bruker PEARs e-postliste til å analysere biblioteker for denne funksjonen. Du kan lime inn i en liste over e-postadresser i skjemaet Personlig navn , skilt med komma eller nye linjer. ListApp vil legge til medlemmene lokalt og laste dem opp til Mailgun.com.

For å legge til medlemmer i bulk, oppretter vi først en JSON-streng av de nye medlemmene som skal lastes opp - her er noen eksempler som du kan bruke.

$ json_upload = '[' foreach ($ adresser som $ i) $ json_upload. = ''; $ json_upload. = '"navn": "'. $ i-> navn. '",'; $ json_upload. = '"adresse": "'. $ i-> adresse. '"'; . $ Json_upload = ',';  $ json_upload. = ']';

Da kaller vi masseopplastingsfunksjonen med denne JSON-strengen:

offentlig funksjon medlemBulkAdd ($ list = ", $ json_str =") $ result = $ this-> mg-> post ("lister /".$ liste. '/ members.json', array ('members' => $ json_str, 'subscribed' => true, 'upsert' => 'ja')); returnere $ result-> http_response_body; 

Du kan legge til enkelte medlemmer i lister også, ved hjelp av Legg til et medlem menyalternativ.

Sende en melding

Du kan sende en melding til en hvilken som helst liste ved hjelp av menyen til høyre. Vi leverer utgående meldingen til Mailgun som enhver annen melding. De $ til adresse er faktisk Mailgun-postlisteadressen, for eksempel [email protected]:

offentlig funksjon send_simple_message ($ til = ", $ subject =", $ body = ", $ fra =") if ($ from == ") $ fra = Yii :: app () -> params ['supportEmail'] ; $ domain = Yii :: app () -> params ['mail_domain']; $ result = $ this-> mg-> sendMessage ($ domain, array ('fra' => $ fra, 'til' => $ til, 'subject' => $ emne, 'tekst' => $ kropp,)); returnere $ resultat-> http_response_body;

Mailgun administrerer deretter leveringen av meldingen til individuelle mottakere.

Du kan se flere eksempler på Mailgun List API i aksjon her.

Du kan også bruke noen av de generiske Mailgun-mottakervariablene for å inkludere personlige hilsener, for eksempel Hei % Recipient_fname% (se dokumentasjonen for malvariabler).

Synkronisere lister og listemedlemmer

Du kan også administrere lister via Mailgun web brukergrensesnitt. Når du åpner ListApp, klikker du deretter på synkron~~POS=TRUNC alternativ. Dette vil hente kopier av alle eksisterende postlister på Mailgun og laste ned alle medlemmene i den lokale databasen. Det synkroniserer i hovedsak ned adresselisten din fra Mailgun.com-siden. Dette alternativet synkroniseres ikke.

Her er fetchLists funksjon. Bruke Mailgun PHP SDK gjør dette ganske enkelt:

 offentlig funksjon fetchLists () $ result = $ this-> mg-> get ("lister"); returnere $ result-> http_response_body; 

Slik får vi medlemmer:

offentlig funksjon fetchListMembers ($ address) $ result = $ this-> mg-> get ("lister /".$ adresse. '/ members'); returnere $ result-> http_response_body; 

Utvider ListApp

Den nåværende versjonen av ListApp snakker til Mailgun i sanntid og har ikke omfattende feilbehandling. På lengre sikt vil det være fint å legge til asynkron, forespørsler om API-forespørsler.

I tillegg til Mailguns egen Mailing List API-dokumentasjon (som inneholder eksempler i cURL, Ruby, PHP, Python, Java og C #), kan du se gjennom, pakke ut og tilpasse Yiigun.php-filen og dens funksjoner til ditt eget PHP-program eller rammeverk.

Hvis du ikke bruker Yii, må du bruke komponist for å installere SDK per Mailguns installasjonsanvisning.

Hva du har lært

Nå har du en applet som kan bygge og administrere skybaserte lister gjennom Mailgun API og bruke disse for å holde venner, kolleger og klienter informert og oppdatert. I del to viser jeg deg hvordan du bygger e-postlister inn i PHP og MySQL. Vi vil fortsatt stole på Mailgun-motoren og API, men vi vil administrere lister i applikasjonen i stedet for med Mailgun's List API.

Ta gjerne inn dine spørsmål og kommentarer nedenfor. Du kan også nå meg på Twitter @ reifman eller email meg direkte. Følg min Tuts + instruktørside for å se fremtidige artikler i denne serien.

Relaterte linker

  • Mailgun.com
  • API-dokumentasjon for Mailgun List
  • Hvordan lage e-post til en kraftig del av webapplikasjonen din med SendGrid (Tuts +)
  • Introduksjon til Yii Framework (Tuts +)