de Kangze Huang

Trimiterea de e-mailuri cu Amazon SES

Completa AWS Web Boilerplate – Tutorial 3

Trimiterea de e mailuri cu Amazon SES

Cuprins

Partea 0: Introducere în AWS Web Boilerplate completă

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.

1611309306 407 Trimiterea de e mailuri cu Amazon SES

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.

1611309306 245 Trimiterea de e mailuri cu Amazon SES

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.

1611309307 500 Trimiterea de e mailuri cu Amazon SES

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.

1611309307 719 Trimiterea de e mailuri cu Amazon SES

Î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.

1611309307 511 Trimiterea de e mailuri cu Amazon SES

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.

1611309308 642 Trimiterea de e mailuri cu Amazon SES

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 0: Introducere în AWS Web Boilerplate completă

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