In deze tutorial ga ik het hebben over Amazon's Simple Email Service (SES) en een paar manieren bespreken waarop je het kunt gebruiken. SES is een uitgaande e-mailservice, wat betekent dat u hiermee e-mails kunt verzenden.
Waarom zou je een e-mailservice nodig hebben? Welnu, bij veel hostingproviders kan het verzenden van veel e-mails (misschien heb je veel klanten met je webshop) een probleem zijn, aangezien hosts vaak beperkingen hebben. Het standaard alternatief is om Gmail te gebruiken voor het verzenden van e-mails, die echter ook beperkingen heeft. Dit is waar SES binnenkomt omdat het is ontworpen voor dit exacte doel. SES maakt het verzenden van e-mails betrouwbaarder, en met behulp van magie helpt het ook uw e-mails om SPAM-mappen te vermijden.
Wanneer u zich aanmeldt bij Amazon, kunt u hun gratis niveau twaalf maanden gebruiken. De gratis laag geeft je toegang tot alle Amazon-services, maar met eerlijke beperkingen. SES is bijvoorbeeld beperkt tot 2000 berichten per dag als u kiest voor hun EC2-hosting.
Anders zijn de kosten $ 0,10 per duizend berichten. Ze beschouwen een enkel bericht als één bericht voor een enkele ontvanger. Dus als u één e-mail naar 1000 e-mailadressen verzendt, kost het u 10 dollarcent.
Het toevoegen van bestanden kost $ 0,12 per GB.
Er zijn momenteel twee manieren om SES te gebruiken:
Ze werken anders; Met de SMTP kunt u rechtstreeks naar de e-mailserver linken, terwijl u met de API-methode e-mails kunt verzenden via de AWS SES-service. In deze tutorial behandelen we het gebruik van de SMTP-server via een WordPress-plug-in en vervolgens (voor de meer gedurfde onder u) zullen we een kijkje nemen bij het gebruik van de SDK API.
Voordat we iets doen, hebben we een account nodig bij SES. Hiermee kunt u zien hoe u uw account klaarmaakt en e-mails verzendt via de console.
Voordat u SES kunt gebruiken, moet u zich aanmelden voor een Amazon Web Services-account - een creditcard is vereist, zelfs voor het gratis abonnement. Als u zich wilt aanmelden, gaat u naar http://aws.amazon.com/ses, volgt u de instructies op het scherm en voert u een paar stappen ter bevestiging van identiteit uit.
Na het aanmelden heeft u toegang tot alle Amazon-services.
Ongeacht of u de service in sandbox of productie gebruikt, moet u uw 'Van'-adres verifiëren. U vindt meer informatie over het verifiëren van e-mailadressen in de helpdocumentatie.
Zodra u een e-mail hebt ontvangen, kunt u productietoegang aanvragen. Hiermee kunt u e-mails verzenden naar niet-geverifieerde e-mailadressen. Het aantal e-mails dat u per dag kunt verzenden, wordt verhoogd.
Notitie: Het is verstandig om in de sandbox-modus te spelen voordat u echte e-mails verzendt.
Hoewel Amazon momenteel geen officiële plug-in heeft, zijn er echter pakketten van derden die de klus kunnen klaren. In dit voorbeeld gebruiken we een plug-in genaamd Amazon SES DKIM Mailer. Dit is een briljante plug-in die compatibel is met verschillende e-maildiensten, waaronder Amazon SES. Dit betekent dat als u besluit niet bij SES te blijven, u uw site niet hoeft te wijzigen, alleen de details van de verbinding.
Deze plug-in wordt ook geleverd met ondersteuning voor DomainKeys Identified Mail (DKIM). DKIM gaat over Reputatie; door uw e-mails hiermee te ondertekenen, voorkomt u dat uw e-mails rechtstreeks naar de ongewenste map gaan.
Afkomstig van de plug-in documentatie over WordPress:
Zoals we eerder hebben besproken, moet je voor het gebruik van Amazon SES in een echte omgeving een productietoegang aanvragen. Zonder dit kunt u geen e-mails verzenden naar adressen die u niet beheert.
Om van DKIM te profiteren, moet u een openbare en persoonlijke sleutel genereren en uw privésleutel naar uw server uploaden (we raden aan deze ".htkeyprivate" te geven en deze in de hoofdmap van de website te plaatsen, en machtigingen in te stellen op 400 of 440).
Voor Windows-gebruikers zijn er veel online sleutelgenerators om dit te helpen. Op een Linux-server of Mac kunt u uw eigen DKIM-sleutels genereren met een wachtwoord van "change-me" met de volgende opdracht terminal:
openssl genrsa -des3 -passout pass: change-me -out .htkeyprivate 1024 && openssl rsa -in .htkeyprivate -passin pass: change-me -pubout -out .htkeypublic
Stel voor DKIM een DNS TXT-record zo in als:
HOST: your-selector._domainkey.example.com. TXT VALUE: v = DKIM1; k = RSA; g = *; s = e-mail; h = sha1; t = s; p = your-public-key;
Gebruik de ingebouwde tests om te controleren of uw blog op de juiste wijze e-mails kan verzenden (DKIM ondertekend).
Om ervoor te zorgen dat de plug-in is ingesteld om met AWS SES te werken, zijn er enkele instellingen die moeten worden geconfigureerd (zie screenshot hierboven).
U kunt nu de plug-ins gebruiken Stuur een testbericht. Zodra je de e-mail succesvol hebt ontvangen, ben je helemaal klaar om hem te gebruiken.
Voor meer gevorderde gebruikers, in deze sectie laat ik u zien hoe u een e-mail kunt verzenden met behulp van de SDK. Deze gebruikt PHP, maar er zijn ook SDK's voor andere talen.
U moet eerst de SDK installeren. Voor PHP zijn er een paar manieren om dit te doen; Componist, Phar, Zip en PEAR. Voor deze tutorial gaan we Composer gebruiken, die u eerst moet installeren. Nadat Composer is geïnstalleerd, zou u toegang moeten hebben via de Command Line Interface (CLI).
Maak een bestand in de hoofdmap van uw project met de naam "composer.json", hier plaatst u uw configuratie. Dan toevoegen:
"require": "aws / aws-sdk-php": "2. *"
Als je de "composer.phar" hebt gebruikt, kun je dat doen php composer.phar installeren
of op ramen componist installeren
. In uw project kunt u vervolgens toevoegen vereisen '/path/to/sdk/vendor/autoload.php';
Nu u dit hebt gedaan, heeft u toegang tot alle product-API's die AWS biedt. Dit betekent dat u nu e-mails kunt verzenden. Dus wat heb je nodig??
Hier is een voorbeeld:
gebruik Aws \ Ses \ SesClient; vereisen 'vendor / autoload.php'; $ client = SesClient :: factory (array ('key' => 'AWS_KEY', 'secret' => 'AWS_SECRET_KEY', 'region' => 'us-east-1')); $ emailSentId = $ client-> sendEmail (array (// Bron is verplicht 'Bron' => '[email protected]', // Bestemming is vereist 'Bestemming' => array ('ToAddresses' => array ('naar @ email.com ')), // Bericht is verplicht' Message '=> array (// Onderwerp is verplicht' Subject '=> array (// Data is verplicht' Data '=>' SES Testing ',' Charset ' => 'UTF-8',), // Hoofdtekst is verplicht 'Hoofdgedeelte' => matrix ('Tekst' => matrix (// Gegevens zijn verplicht 'Gegevens' => 'Mijn e-mail in platte tekst', 'Karakterset' = > 'UTF-8',), 'Html' => array (// Gegevens zijn verplicht 'Data' => 'Mijn HTML Email',' Charset '=>' UTF-8 ',),),),' ReplyToAddresses '=> array (' [email protected] '),' ReturnPath '=>' [email protected] '));
Laten we daar doorheen lopen. Eerst hebben we het gebruik van de naamruimte toegevoegd, zodat de code er schoner uitziet. Vervolgens hebben we het autoload.php-bestand van de componist toegevoegd.
Om een bestand daadwerkelijk te kunnen verzenden, moeten we een klant maken. Dit gebeurt met behulp van de SES Client Factory. Dit kan veel verschillende instellingen vereisen, maar het absolute minimum dat we nodig hebben, is de sleutel, het geheim en de regio. U vindt de sleutel en het geheim in IAM Management Console. De regio is de regio die u voor de SES hebt gebruikt.
Daarmee heb je nu de client-setup en klaar om te gaan. U kunt de client nu gebruiken om te bellen sendEmail
. Er zijn andere methoden die u kunt bellen en u kunt meer informatie over hen vinden in de helpdocumentatie.
De sendEmail
methode neemt een enkele parameter die een array is. Voor deze array zijn bepaalde gegevens vereist; de bron is bijvoorbeeld vereist en moet een adres zijn dat u in uw account hebt gevalideerd om het verzenden van e-mails toe te staan.
Zodra u de e-mails die u wilt gebruiken hebt toegevoegd en de inhoud van uw e-mail hebt toegevoegd, kunt u nu het script uitvoeren en heeft u uw eerste e-mail verzonden!
Welke implementatieroute u ook neemt, ik hoop dat deze tutorial uw interesse heeft gewekt en u heeft aangemoedigd om naar Amazon SES te kijken! Als u problemen tegenkomt bij het gebruik van SES, kunt u gerust om advies vragen in de opmerkingen.