Trimiterea de e-mailuri din aplicațiile Python Flask cu Twilio SendGrid
Publicat: 2020-06-30A determina dacă să construiți sau să cumpărați infrastructura dvs. de e-mail nu este o decizie mică. Aveți lățime de bandă pentru a suporta problemele de livrare? Veți putea ține pasul cu trimiterea pe măsură ce creșteți? Ce este mai rentabil? Deși există o serie de factori de luat în considerare, aceasta este o conversație pentru un alt ghid (cum ar fi acest ghid Build it or Buy It ).
În schimb, acest tutorial vă va arăta cât de ușor este să trimiteți e-mail printr-un serviciu de e-mail dedicat. Vom explica cum să livrăm e-mailuri prin Twilio SendGrid utilizând cadrul Flask și extensia Flask-Mail .
Instrumente tutoriale
Pentru a urma acest tutorial aveți nevoie de următoarele elemente:
- Python 3.6 sau mai nou. Dacă sistemul dvs. de operare nu oferă un interpret Python 3.6+, puteți accesa python.org pentru a descărca un program de instalare.
- Un cont Twilio SendGrid gratuit. Dacă sunteți nou la Twilio SendGrid, creați un cont de probă . Cu un cont de probă, puteți trimite 40.000 de e-mailuri timp de 30 de zile, apoi 100 de e-mailuri pe zi pentru totdeauna.
Se instalează cu SendGrid
Înainte de a putea trimite e-mail prin SendGrid, trebuie să creați o cheie API pe care o veți folosi pentru a autentifica accesul la serviciile SendGrid. Conectați -vă la contul SendGrid, apoi faceți clic pe bara laterală din stânga, selectați „Setări” și apoi Chei API . Faceți clic pe „Creați cheia API”.
Dați cheii dvs. API un nume prietenos (păstrați-o simplă și directă, astfel încât să vă amintiți la ce se referă!). Pentru acest tutorial, am ales numele Flask-Mail . Am selectat „Acces complet” pentru permisiuni, care oferă cheii posibilitatea de a efectua toate funcțiile necesare de trimitere a e-mailurilor (acces la punctele finale GET, PATCH, PUT, DELETE și POST). Dacă preferați să creați o cheie care are permisiuni foarte specifice, atunci selectați „Acces restricționat” și configurați accesul după cum este necesar.
Când faceți clic pe butonul „Creați și vizualizați” vi se va prezenta cheia dvs. Această cheie nu va mai fi afișată niciodată, așa că trebuie să faceți clic pe ea pentru a o copia în clipboard. Apoi lipiți-l într-un document securizat, astfel încât să îl puteți utiliza mai târziu. Dacă vă pierdeți cheia, va trebui să generați una nouă. După ce ați salvat cheia, puteți face clic pe butonul „Terminat”.
Construirea unui mediu Python
Acum că avem configurarea completă, ne putem scufunda în cum să trimitem e-mailuri din aplicațiile Python Flask. Vom începe prin a crea un nou director pe computer numit *twilio-sendgrid-tests* (sau ceva similar), apoi vom crea un nou mediu virtual Python în cadrul acestuia.
Pentru utilizatorii Mac și Unix, comenzile sunt:
Pentru utilizatorii de Windows, comenzile sunt:
Apoi, instalați Flask, Flask-Mail și python-dotenv în mediul dvs. virtual:
Configurarea unei aplicații Flask
Să construim o aplicație de pornire Flask și Flask-Mail în fișierul app.py :
Aici puteți vedea cum să configurați corect Flask-Mail pentru a utiliza serviciul SMTP al SendGrid. Setările importante sunt:
- Serverul de e-mail ar trebui să fie `smtp.sendgrid.net`.
- Portul de e-mail ar trebui să fie 587. (Știi ce porturi să folosești când? Consultați această postare de blog. )
- TLS trebuie să fie activat. (Care este diferența dintre SSL și TLS ?)
- Este necesară autentificarea. Pentru numele de utilizator, trebuie să utilizați `apikey` (acesta este același pentru toate conturile SendGrid). Parola este cheia API SendGrid pe care ați creat-o în secțiunea anterioară.
Pentru această aplicație Flask, am adăugat setările de mai sus în cheile de configurare adecvate pentru extensia Flask-Mail. Din motive de securitate, am importat cheia API dintr-o variabilă de mediu numită „SENDGRID_API_KEY”. De asemenea, setăm o adresă de e-mail implicită a expeditorului dintr-o variabilă de mediu. Aceasta este adresa de e-mail care va apărea implicit în câmpul „de la” al tuturor e-mailurilor.
Creați un fișier .env cu cele două variabile necesare:
Flask va importa automat variabilele definite în fișierul .env (atâta timp cât aveți instalat pachetul python-dotenv), deci este suficient pentru a introduce aceste două variabile în configurația aplicației Flask.
Trimiterea unui e-mail de testare
Să vedem cum vă puteți trimite un e-mail de test din shell-ul Python:
Rețineți că am pornit shell-ul Python cu comanda `flask shell`. Acest lucru va asigura că aplicația Flask pe care am construit-o în app.py este importată.
Odată ajuns în shell, importați instanța `mail` pe care am creat-o în app.py și clasa `Message` din Flask-Mail:
Apoi creați o instanță „Message”:
Ultimul pas este să trimiteți acest e-mail:
Si asta e! Dacă totul decurge conform planului, e-mailul ar trebui să ajungă în căsuța dvs. de e-mail în doar câteva secunde.
Dacă doriți să vedeți un exemplu de rută Flask care integrează această funcționalitate, iată unul simplu pe care îl puteți adăuga în partea de jos a app.py :
Pentru a finaliza aplicația exemplu, trebuie să adăugați fișierul șablon index.html . Mai întâi creați un director pentru șabloanele dvs.:
Și apoi scrieți următorul conținut în fișierul templates/index.html :
Rulați aplicația de testare cu:
Apoi navigați la http://localhost:5000 în browserul dvs. web pentru a accesa aplicația.
Acum puteți introduce o adresă de e-mail a destinatarului și, când faceți clic pe butonul, un e-mail de test va fi trimis la acea adresă.
Rezolvarea problemelor de livrare
Folosind aplicația Flask de mai sus, ar trebui să reușiți să trimiteți e-mailuri. Există totuși șansa ca e-mailurile dvs. să nu reușească să fie livrate. Deoarece SendGrid trimite e-mailuri asincron, majoritatea erorilor de livrare apar după ce expeditorul își finalizează partea tranzacției, astfel încât aplicația dvs. nu va avea nicio indicație că a existat o eroare. Dacă se întâmplă acest lucru, atunci este probabil ca e-mailul să fi fost respins de serverul de e-mail al destinatarului.
Din fericire, dacă întâmpinați acest lucru trimițând un e-mail așa cum am descris, puteți utiliza tabloul de bord Twilio SendGrid pentru a vă ajuta să remediați ce sa întâmplat. Din tabloul de bord SendGrid , faceți clic pe Activitate , apoi pe butonul „Afișați toată activitatea” din mijlocul paginii. Aceasta vă va afișa o listă cu toate e-mailurile pe care ați încercat să le trimiteți, indicând dacă au fost livrate cu succes sau nu.
Puteți vedea în imaginea de mai sus că un e-mail care a fost trimis la o adresă example.com nu a reușit să se livreze. Pentru orice e-mail care nu a fost livrat, puteți face clic pe e-mail pentru a vedea informații detaliate, inclusiv orice răspunsuri de eroare trimise de serverul de e-mail al destinatarului.
Odată ce ați determinat de ce e-mailurile dvs. nu sunt trimise, există o serie de moduri de a rezolva aceste probleme de livrare. Dacă vedeți o serie de greșeli de ortografie în e-mailuri (de exemplu, @yaho.com sau @gmal.com), ar putea fi în valoare de a explora un instrument de validare a e-mailului pentru a detecta orice greșeală de ortografie obișnuită în lista dvs. de contacte de e-mail.
Există multe alte probleme care pot duce la livrarea eșuată, inclusiv o reputație slabă de trimitere sau o adresă IP blocată. Aflați totul despre livrarea prin e-mail în Ghidul nostru de livrare prin e-mail 2020 .
Concluzie
După cum puteți vedea din tutorial, Twilio SendGrid se integrează cu ușurință în fluxul de lucru de trimitere e-mail Flask, făcând trimiterea e-mailului o sarcină simplă.
Dacă vă întrebați acum cum primiți e-mailuri de la Flask Framework în Python, nu vă faceți griji, noi vă oferim! Consultați acest articol: Cum să primiți e-mailuri cu cadrul Flask pentru Python .
Și, pentru mai multe resurse despre cum să integrați Twilio SendGrid sau să trimiteți prin API-urile noastre, consultați Centrul nostru de cunoștințe .