In de afgelopen paar jaar ben ik verschillende frustraties tegengekomen met zowel open source e-maillijst-applicaties als betaalde cloud-gebaseerde providers. In deze tutorial zal ik u begeleiden bij het gebruik van Mailgun.com, een economische oplossing die ik nu al twee jaar met succes gebruik.
Open source PHPList was altijd vrij complex en ik verloor de interesse toen ze hun gebruikersinterface begonnen te reviseren in richtingen die ingewikkelder leken, niet minder. In het midden van mijn initiatief handtekening verzamelen campagne in Seattle, Mailchimp uitgeschakeld mijn e-maillijst, zeggende dat ik niet goed toestemming kreeg van leden-ook al hadden ze persoonlijk onze campagne hun e-mail op papieren formulieren. Toen ontdekte ik Mailgun en besloot ik mijn eigen oplossing te bouwen, die ik sindsdien altijd heb gebruikt.
Mailgun is een cloud-gebaseerd SaaS e-mailkanon, zoals SendGrid. Het is eigenlijk gratis voor maximaal 10.000 e-mails per maand. Mailgun is ongelooflijk krachtig en biedt een goed gedocumenteerde API in verschillende populaire talen. Het biedt zowel verzend- als ontvangstmogelijkheden, waarvan de laatste vrij moeilijk vanaf nul kan worden ontwikkeld. Hoewel Mailgun geen sjablonen voor rich HTML-nieuwsbrieven biedt, biedt het een platform waarop u alles kunt bouwen.
Ik gebruik Mailgun's lijstdiensten om met vrienden te communiceren en contact te maken met mijn sociale gemeenschappen, en ook voor zakelijke en marketingdoeleinden. Voor de meeste van mijn behoeften werken eenvoudige HTML-broadcast-e-mails goed.
In deze zelfstudie ga ik u door ListApp begeleiden, een applet die is gebaseerd op de Mailgun List API. In een vervolg-zelfstudie zal ik je helpen met het bouwen van je eigen e-maillijstschema op native PHP en MySQL. Elke aanpak heeft zijn eigen voordelen.
Als u in de eerste plaats Mailgun's eigen cloudgebaseerde webgebruikersinterface wilt uitzenden en deze wilt gebruiken voor het beheren van uw lijst, is ListApp wellicht de beste optie. Hier is een voorbeeld van de webgebaseerde gebruikersinterface van Mailgun voor het beheren van lijsten:
Met behulp van ListApp wordt de hoofdkopie van uw lijst onderhouden in de cloud op Mailgun en lokaal gesynchroniseerd via de API naar uw installatie van ListApp.
Als je misschien een groep e-maillijst wil maken of een fijnmaziger controle wilt over je e-mail en adresseerbehoeften, wil je misschien leren hoe je lijstfuncties vanaf het begin kunt bouwen. In de volgende tutorial vertrouwen we nog steeds op de Mailgun-engine en API, maar we zullen lijsten in de toepassing beheren in plaats van met de List API van Mailgun. Dit vermijdt ook de complexiteit van synchronisatie.
ListApp biedt een eenvoudige webgebaseerde frontend voor veel voorkomende scenario's die u mogelijk gebruikt met de mailinglijstfuncties van Mailgun:
U kunt ListApp op elk op LAMP gebaseerd systeem installeren. Ik heb mijn generieke handleiding gepost voor het installeren van een Ubuntu LAMP-server ter referentie. De app bevat instructies voor het instellen van ListApp op een Ubuntu-server met 1 GB RAM. Het vereist PHP 5.x, MySQL 5.x en de PEAR- en cURL-bibliotheken.
ListApp is geschreven in het Yii Framework voor PHP. U hoeft niets te weten over het Yii-framework om de applicatie uit te voeren. Als u Yii liever niet gebruikt, kunt u verder bouwen op de Yiigun-component die wordt gebruikt in ListApp. Yiigun.php is in wezen een PHP-klassenbestand met methoden en helpers voor het gebruik van de Mailgun Mailing List SDK.
U moet zich aanmelden voor een gratis (of hoger niveau) Mailgun-account om uw API-sleutels voor het instellingenbestand te verkrijgen. Als u een betaald account hebt, moet u uw domeinen toevoegen en DNS-instellingen maken om ze te gebruiken. Als u een gratis account gebruikt, wordt uw domein yourchoice.mailgun.org. Daarom kunnen uw lijstadressen [email protected] zijn. Uw Mailgun API-sleutels worden weergegeven op de startpagina van het bedieningspaneel.
Het gebruik van de Mailgun Mailing List API is heel eenvoudig. Mailgun biedt zijn eigen Mailing List API-documentatie om ons te helpen. U kunt bekijken hoe ListApp de Mailgun-API gebruikt in onze Yiigun.php-component. ListApp gebruikt de Mailgun PHP SDK om te communiceren met Mailgun.
Zorg ervoor dat u de instructies voor het configureren van uw API-sleutels tijdens de installatie volgt. Wanneer de Yiigun-klasse wordt gebruikt, wordt de constructor aangeroepen, waarmee een veilige initialisatie met de API van Mailgun wordt gemaakt:
function __construct () // initialiseer mailgun-verbinding $ this-> mg = nieuwe Mailgun (Yii :: app () -> params ['mailgun'] ['api_key']);
U kunt nieuwe mailinglijsten maken met de menuopties rechts van ListApp. Elke lijst vereist een naam, een lijst met een e-mailadres en een beschrijving. Wanneer u een nieuwe lijst maakt, upload ListApp ook de lijst en de instellingen naar Mailgun. U kunt ook de eigenschappen van elke lijst bijwerken.
Zo maken we een nieuwe lijst:
public function listCreate ($ newlist) $ result = $ this-> mg-> post ("lists", array ('address' => $ newlist-> address, 'name' => $ newlist-> naam, 'omschrijving '=> $ newlist-> description,' access_level '=> $ newlist-> access_level)); return $ result-> http_response_body;
Zo werken we de eigenschappen van de maplijst bij:
public function listUpdate ($ existing_address, $ model) $ result = $ this-> mg-> put ("lists /".$ existing_address, array ('address' => $ model-> address, 'name' => $ model-> naam, 'omschrijving' => $ model-> omschrijving, 'access_level' => $ model-> access_level)); return $ result-> http_response_body;
U kunt nieuwe leden importeren in een lijst vanuit ListApp. We gebruiken PEAR's e-maillijsten voor het ontleden van bibliotheken voor deze functie. U kunt in een lijst met e-mailadressen in het formulier plakken Persoonlijke naam
, gescheiden door komma's of nieuwe lijnen. ListApp zal de leden lokaal toevoegen en ze uploaden naar Mailgun.com.
Als u leden bulksgewijs wilt toevoegen, maken we eerst een JSON-reeks met de nieuwe leden die u wilt uploaden. Hier vindt u enkele voorbeeldcodes die u mogelijk gebruikt.
$ json_upload = '[' foreach ($ adressen als $ i) $ json_upload. = ''; $ json_upload. = '"naam": "'. $ i-> naam. '",'; $ json_upload. = '"adres": "'. $ i-> address. '"'; . $ Json_upload = ','; $ json_upload. = ']';
Vervolgens noemen we de bulkuploadfunctie met deze JSON-reeks:
public function memberBulkAdd ($ list = ", $ json_str =") $ result = $ this-> mg-> post ("lists /".$ list. '/ members.json', array ('members' => $ json_str, 'subscribed' => true, 'upsert' => 'yes')); return $ result-> http_response_body;
U kunt ook individuele leden aan lijsten toevoegen, met behulp van de Voeg een lid toe menu-optie.
U kunt een bericht naar elke lijst verzenden via het menu aan de rechterkant. We leveren het uitgaande bericht aan Mailgun zoals elk ander bericht. De $ om
adres is eigenlijk het adres van de Mailgun-mailinglijst, zoals [email protected]:
openbare functie 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, 'to' => $ naar 'onderwerp' => $ subject, 'text' => $ body,)); return $ result-> http_response_body;
Mailgun beheert vervolgens de bezorging van het bericht aan individuele ontvangers.
U kunt hier meer voorbeelden van de Mailgun List API zien.
U kunt ook enkele van de generieke Mailgun-ontvangervariabelen gebruiken om persoonlijke begroetingen op te nemen, zoals Hallo % Recipient_fname%
(zie de documentatie over de sjabloongroottes).
U kunt uw lijsten ook beheren via de webgebruikersinterface van Mailgun. Vervolgens, wanneer u ListApp opent, klikt u op Synchroniseren keuze. Hiermee worden kopieën van alle bestaande mailinglijsten bij Mailgun opgehaald en worden al hun leden in de lokale database gedownload. Het synchroniseert in wezen uw mailinglijst van de Mailgun.com-site. Deze optie wordt niet gesynchroniseerd.
Hier is de fetchLists
functie. Het gebruik van de Mailgun PHP SDK maakt dit vrij eenvoudig:
openbare functie fetchLists () $ result = $ this-> mg-> get ("lists"); return $ result-> http_response_body;
Dit is hoe we leden ophalen:
openbare functie fetchListMembers ($ adres) $ result = $ this-> mg-> get ("lists /".$ address. '/ members'); return $ result-> http_response_body;
De huidige versie van ListApp praat in realtime met Mailgun en heeft geen uitgebreide foutafhandeling. Op langere termijn zou het goed zijn om asynchrone, in de wachtrij geplaatste API-verzoeken toe te voegen.
Naast de Mailing List API-documentatie van Mailgun (die voorbeelden bevat in cURL, Ruby, PHP, Python, Java en C #), kunt u het Yiigun.php-bestand en de bijbehorende functies voor uw eigen PHP-toepassing of -raamwerk bekijken, extraheren en aanpassen..
Als u Yii niet gebruikt, moet u composer gebruiken om de SDK te installeren volgens de installatie-instructies van Mailgun.
Nu hebt u een applet die cloudgebaseerde lijsten kan bouwen en beheren via de Mailgun API en deze gebruiken om uw vrienden, collega's en klanten op de hoogte te houden en up-to-date te houden. In deel twee laat ik je zien hoe je native e-maillijsten kunt bouwen in PHP en MySQL. We zullen nog steeds vertrouwen op de Mailgun-engine en API, maar we zullen lijsten in de applicatie beheren in plaats van met Mailgun's List API.
Aarzel niet om uw vragen en opmerkingen hieronder te plaatsen. Je kunt me ook bereiken via Twitter @reifman of mij rechtstreeks een e-mail sturen. Volg mijn Tuts + instructeurspagina om toekomstige artikelen in deze serie te bekijken.