de Kangze Huang
Table of Contents
Trimiterea de e-mailuri cu Amazon SES
Completa AWS Web Boilerplate – Tutorial 3

Cuprins
Partea 1: Autentificare utilizator cu AWS Cognito (3 părți)
Partea 2: Economisirea costurilor de stocare a fișierelor cu Amazon S3 (1 parte)
Partea 3: Trimiterea de e-mailuri cu Amazon SES (1 parte)
Partea 4: Gestionați utilizatorii și permisiunile cu AWS IAM [Coming Soon]
Partea 5: Găzduirea serverului cloud cu AWS EC2 și ELB[Coming Soon]
Partea 6: MongoDB Killer: AWS DynamoDB [Coming Soon]
Partea 7: Scalarea SQL nedureroasă utilizând AWS RDS [Coming Soon]
Partea 8: Arhitectură fără server cu Amazon Lambda [Coming Soon]
Descărcați Github aici.
Înființat
Trimiterea e-mailurilor cu Amazon SES este foarte simplă. Să începem de la set-up. Accesați Amazon SES și faceți clic Adrese de email în bara laterală. Apoi apasa Verificați o nouă adresă de e-mail și introduceți un e-mail pe care doriți să îl utilizați pentru mesagerie în aplicație.

Acum mergeți la furnizorul dvs. de e-mail și faceți clic pe linkul de verificare. După verificare, reveniți la Amazon SES Adrese de email filă. Acum ar trebui să vedeți e-mailul verificat.

Acest lucru a fost necesar din 2 motive. Primul este că avem nevoie de un e-mail pentru trimiterea unui mesaj, iar al doilea este pentru că ne aflăm într-un mediu sandbox. Un mediu sandbox înseamnă că puteți trimite și primi e-mailuri numai de la adrese verificate și vă împiedică să trimiteți spam persoanelor. Acesta este tot setul de care avem nevoie pentru acest cazan.

Dacă doriți să puteți trimite e-mailuri la orice adresă de e-mail, trebuie să faceți o cerere scrisă către Amazon pentru a absolvi mediul sandbox. Pentru a face acest lucru, navigați la colțul din dreapta sus la A sustine > Suport Center.

În următorul ecran, faceți clic pe Create case
.
Aceasta este o formă simplă, dar vă vom explica pe scurt. Selectați Creșterea limitei de servicii și setați Tip limită la Limite de trimitere SES. Acum creați 2 cereri, una unde Limită este Cota zilnică dorită de trimitere (câte e-mailuri pot fi trimise într-o zi), iar cealaltă unde Limită este Rata maximă de trimitere dorită. Seteaza Nouă valoare limită la suma de care aveți nevoie. În cele din urmă, setați opțional tipul de poștă, deoarece vă crește șansele de aprobare. Utilizați tranzacțional dacă e-mailurile dvs. sunt generate ca o solicitare a activității unui utilizator. Există altele disponibile pentru alte cazuri de utilizare.

Restul cererii este ușor. Asigurați-vă că sunteți de acord să respectați Termenii și condițiile și că aveți un proces de gestionat ricoșări și reclamații (pentru când utilizatorii vă marchează e-mailul ca spam). În cele din urmă, dați o scurtă explicație a cazului dvs. de utilizare.

Trimiteți codul dvs. și ar trebui să primiți un e-mail de la Amazon cu rezultatele cererii dvs. de creștere a serviciului. Odată aprobată, aplicația dvs. poate trimite mesaje către orice e-mail.
Codul
Suntem gata să cercetăm codul! Mergi la App/src/api/aws/aws_ses.js
unde se află cea mai mare parte a codului. Să aruncăm o privire la funcția principală sendAWSEmail()
:
export function sendAWSEmail(email, message){ const ses = new AWS.SES({ region: 'us-east-1' }) const p = new Promise((res, rej)=>{ if(!email|| message){ rej('Missing user email or message content') }else{ const params = createInquiryParamsConfig(email, message) // console.log('Sending email with attached params!') AWS.config.credentials.refresh(function(){ // console.log(AWS.config.credentials) ses.sendEmail(params, function(err, data) { if(err){ // console.log(err, err.stack); // an error occurred rej(err) }else{ // console.log(data); // successful response res('Success! Email sent') } }) }) } }) return p}
Acest lucru este extrem de simplu. Primim două argumente, un e-mail de trimis și un mesaj de trimis. Primul lucru pe care îl facem în această funcție este instanțierea obiectului AWS SES pentru interacțiunea cu AWS prin simpla trecere în regiune. Apoi verificăm dacă există un e-mail destinatar și un mesaj. Dacă ambele sunt furnizate, atunci putem efectiv să trimitem e-mailul.
Presupunând că avem atât un e-mail cât și un mesaj destinatar, vom crea un params
obiect pentru ca AWS SES să citească pentru toate informațiile și opțiunile necesare. Acest params
obiectul este creat cu createInquiryParamsConfig()
. Înainte să ne scufundăm în acea gaură de iepure, să terminăm rapid să explicăm restul sendAWSEmail()
. Reîmprospătăm acreditările utilizatorului AWS Cognito (pe care le-am setat cu AWS Cognito, explicate în documentul alt tutorial) și sunați ses.sendEmail
cu params
și a primit un apel de răspuns. Respingeți promisiunea dacă există o eroare și rezolvați cu un mesaj de succes dacă nu există nicio eroare. ses.sendEmail
este singura funcție AWS pe care o vom folosi și orice altceva de care avem nevoie este determinat în params
.
Acum să vedem cum să facem params
cu createInquiryParamsConfig()
.
function createInquiryParamsConfig(email, message){ const params = { Destination: { BccAddresses: [], CcAddresses: [], ToAddresses: [ email ] }, Message: { Body: { Html: { Data: generateHTMLInquiryEmail(landlordEmail, message), Charset: 'UTF-8' } }, Subject: { Data: 'Kangzeroos Boilerplate says hi ' + email, Charset: 'UTF-8' } }, Source: '[email protected]', ReplyToAddresses: [ '[email protected]' ], ReturnPath: '[email protected]' } return params}
Destul de simplu, trecem email
și message
și returnează un obiect javascript mare. Toate valorile pe care le vedeți aici sunt necesare, dar puteți adăuga și o mulțime de alte configurații opționale. Funcția la care trebuie să fim atenți este generateHTMLInquiryEmail()
. Să ne uităm la asta.
function generateHTMLInquiryEmail(email, message){ return ` <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>title</title> </head> <body> <table border="0" cellpadding='0' cellspacing='0' height="100%" width="100%" id='bodyTable'> <tr> <td align='center' valign='top'> <table border="0" cellpadding='20' cellspacing='0' width="600" id='emailContainer'> <tr style="background-color:#99ccff;"> <td align='center' valign='top'> <table border="0" cellpadding='20' cellspacing='0' width="100%" id='emailBody'> <tr> <td align='center' valign='top' style="color:#337ab7;"> <h3>${message}</h3> </td> </tr> </table> </td> </tr> <tr style="background-color:#74a9d8;"> <td align='center' valign='top'> <table border="0" cellpadding='20' cellspacing='0' width="100%" id='emailReply'> <tr style="font-size: 1.2rem"> <td align='center' valign='top'> <span style="color:#286090; font-weight:bold;">Send From:</span> <br/> ${email} </td> </tr> </table> </td> </tr> </table> </td> </tr> </table> </body> </html> `}
Tot ce facem aici este să creăm un fișier HTML și să trecem în email
și message
pentru a crea un e-mail personalizat. Folosim litere de șir ES6 pentru a adăuga în variabile șir cu ${ }
ca astfel: <h3>${message
}
.
Si asta e! Puteți utiliza orice cod frontal doriți, pur și simplu treceți într-un email
și message
la sendAWSEmail()
. Doar aminteste-ti sendAWSEmail()
returnează o promisiune, deci va trebui să te descurci în consecință. Dacă nu știi cum să faci față promisiunilor, verifică-mi alt tutorial aici.
Ne vedem data viitoare!
Cuprins
Partea 1: Autentificare utilizator cu AWS Cognito (3 părți)
Partea 2: Economisirea costurilor de stocare a fișierelor cu Amazon S3 (1 parte)
Partea 3: Trimiterea de e-mailuri cu Amazon SES (1 parte)
Partea 4: Gestionați utilizatorii și permisiunile cu AWS IAM [Coming Soon]
Partea 5: Găzduirea serverului cloud cu AWS EC2 și ELB[Coming Soon]
Partea 6: MongoDB Killer: AWS DynamoDB [Coming Soon]
Partea 7: Scalarea SQL nedureroasă utilizând AWS RDS [Coming Soon]
Partea 8: Arhitectură fără server cu Amazon Lambda [Coming Soon]
Această metodă a fost parțial utilizată în implementarea renthero.ca