Ce trebuie să trimiteți un e-mail cu Python? Unele cunoștințe de bază de programare și web, împreună cu abilitățile elementare Python. Presupunem că ați avut deja o aplicație web construită cu această limbă și acum trebuie să extindeți funcționalitatea acesteia cu notificări sau alte trimiteri de e-mailuri. Acest tutorial vă va ghida prin pașii cei mai esențiali de a trimite e-mailuri prin intermediul unui server SMTP:

  1. Configurarea unui server pentru testare (știi de ce este important?,)
    • Local SMTP server
    • Mailtrap fals SMTP server
  2. Diferite tipuri de e-mailuri: HTML, cu imagini și atașamente
  3. Trimite mai multe e-mailuri personalizate (Python este de neprețuit pentru e-mail de automatizare)
  4. Unele populare de e-mail trimiterea de opțiuni, cum ar fi Gmail și tranzacționale servicii de e-mail

Servit cu numeroase exemple de cod!notă: scris și testat pe Python 3.7.2.

trimiterea unui e-mail folosind SMTP

prima veste bună despre Python este că are un modul încorporat pentru trimiterea de e-mailuri prin SMTP în biblioteca sa standard., Nu sunt necesare instalații sau trucuri suplimentare. Puteți importa modulul folosind următoarea declarație:

import smtplib

Pentru a vă asigura că modulul a fost importate în mod corespunzător și a obține o descriere completă a claselor sale și argumente, de tip într-un mod interactiv Python sesiune:

help(smtplib)

La următorul pas, vom vorbi un pic despre servere: alegerea dreptul de opțiune și configurarea.,

server SMTP pentru testarea e-mailurilor în Python

când creați o aplicație nouă sau adăugați orice funcționalitate, mai ales atunci când o faceți pentru prima dată, este esențial să experimentați pe un server de testare. Iată o scurtă listă de motive:

  1. nu veți ajunge în cutiile poștale ale prietenilor și clienților. Acest lucru este vital atunci când testați trimiterea de e-mailuri în vrac sau lucrați cu o bază de date de e-mail.
  2. nu vă veți inunda propriul inbox cu e-mailuri de testare.
  3. domeniul dvs. nu va fi listat negru pentru spam.,

server SMTP local

Dacă preferați să lucrați în mediul local, serverul de depanare SMTP local ar putea fi o opțiune. În acest scop, Python oferă un modul smtpd. Are o caracteristică DebuggingServer, care va renunța la mesajele pe care le trimiteți și le va imprima la stdout. Este compatibil cu toate sistemele de operare.,

Set SMTP server localhost:1025

python -m smtpd -n -c DebuggingServer localhost:1025

În scopul de a rula serverul SMTP pe portul 25, veți avea nevoie de permisiuni de root:

sudo python -m smtpd -n -c DebuggingServer localhost:25

Acesta vă va ajuta să verificați dacă codul este de lucru și subliniază posibilele probleme dacă există orice. Cu toate acestea, nu vă va oferi posibilitatea de a verifica modul în care șablonul dvs. de e-mail HTML este redat.,

Fals server SMTP

Fals SMTP server imită munca de un real 3rd party web server. În alte exemple din această postare, vom folosi Mailtrap. Dincolo de testarea trimiterii prin e-mail, ne va permite să verificăm modul în care e-mailul va fi redat și afișat, să revizuim datele brute ale mesajului, precum și să ne furnizeze un raport de spam., Mailtrap este foarte ușor de configurat: va trebui doar să copiați acreditările generate de aplicație și să le lipiți în codul dvs.

Iată cum arată în practică:

Mailtrap face lucrurile chiar mai ușor. Accesați secțiunea integrări din fila Setări SMTP și obțineți șablonul gata de utilizare al mesajului simplu, cu acreditările Mailtrap în el., Acesta este cel mai de bază, opțiunea de a instrui dvs. de Python script pe care-l trimite la cine este sendmail() metodă de exemplu:

Încercați Mailtrap Gratuit,

codul pare destul de simplu, nu? Să aruncăm o privire mai atentă la ea și să adăugăm unele erori de manipulare (a se vedea #explicații între ele). Pentru a prinde erori, folosim blocurile” încercați „și” cu excepția”. Consultați documentația pentru lista de excepții aici.,

Odată ce ai Trimis rezultat în Coajă, ar trebui să vedeți mesajul tău în Mailtrap inbox:

Trimiterea de e-mail HTML

În cele mai multe cazuri, aveți nevoie pentru a adăuga unele de formatare, link-uri, sau imagini la e-mail notificări. Putem pune pur și simplu toate acestea cu conținutul HTML. În acest scop, Python are un pachet de e-mail.

ne vom ocupa de tipul de mesaj MIME, care este capabil să combine HTML și text simplu. În Python, acesta este gestionat de e-mail.modulul mime.,

este mai bine să scrieți separat o versiune text și o versiune HTML, apoi să le îmbinați cu instanța MIMEMultipart(„alternativă”). Aceasta înseamnă că un astfel de mesaj are două opțiuni de redare în consecință. În cazul în care un HTML nu este redat cu succes din anumite motive, o versiune text va fi în continuare disponibilă.

de Intrare:

Ieșire:

Trimiterea de e-mailuri cu atașamente în Python

următorul pas în stăpânirea trimiterea de e-mailuri cu Python este atașarea de fișiere., Atașamentele sunt încă obiectele MIME, dar trebuie să le codificăm cu modulul base64. Câteva puncte importante despre atașamente:

  1. Python vă permite să atașați fișiere text, imagini, fișiere audio și chiar aplicații. Trebuie doar să utilizați clasa de e-mail corespunzătoare ca e-mail.mime.audio.MIMEAudio sau e-mail.mime.imagine.Imagine mimetică. Pentru informații complete, consultați această secțiune a documentației Python. De asemenea, puteți verifica exemplele furnizate de Python pentru o mai bună înțelegere.
  2. amintiți-vă despre Dimensiunea fișierului: trimiterea fișierelor de peste 20MB este o practică proastă., în e-mailurile tranzacționale, fișierele PDF sunt cele mai frecvent utilizate: de obicei primim chitanțe, bilete, permise de îmbarcare, Confirmări de comenzi etc. Deci, să examinăm cum să trimiteți un permis de îmbarcare ca fișier PDF.

    de Intrare:

    Pentru a atașa mai multe fișiere, puteți apela la mesaj.atașați () metoda de mai multe ori.

    cum se trimite un e-mail cu imagini

    imaginile, chiar dacă fac parte din corpul mesajului, sunt și atașamente., Există trei tipuri de ele: atașamente CID (încorporate ca obiect MIME), imagini base64 (încorporare inline) și imagini legate. Am descris particularitățile, argumentele pro și contra și compatibilitatea cu majoritatea clienților de e-mail din această postare.

    să trecem la exemple.

    Pentru a adăuga un CID atașament, vom crea un multipart MIME mesaj cu MIMEImage componente:

    Ieșire:

    CID imagine este prezentată atât ca o parte din mesaj HTML și ca un atașament., Mesajele cu acest tip de imagine sunt adesea considerate spam: verificați fila Analytics din Mailtrap pentru a vedea rata de spam și recomandările privind îmbunătățirea acestuia. Mulți clienți de e – mail – în special Gmail-nu afișează imagini CID în majoritatea cazurilor. Deci, să trecem în revistă modul de încorporare a unei imagini codificate base64.

    Aici vom folosi base64 module și experiment cu același fișier imagine:

    Ieșire:

    Acum imaginea este încorporat în HTML mesaj și nu este disponibilă ca fișier atașat., Python a codificat imaginea noastră jpg, iar dacă mergem la fila sursă HTML, vom vedea șirul lung de date de imagine în img src.

    cum să trimiteți mai multe e-mailuri în Python

    trimiterea mai multor e-mailuri către diferiți destinatari și a le face personale este lucrul special despre e-mailurile din Python.

    pentru a adăuga mai mulți destinatari, puteți introduce doar adresele lor separate prin virgulă, adăugați CC și BCC. Dar dacă lucrați cu o trimitere de e-mail în vrac, Python vă va salva cu bucle. una dintre opțiuni este crearea unei baze de date într-o .,format csv (presupunem că este salvat în același folder ca scriptul Python). adesea ne vedem numele în exemple tranzacționale sau chiar promoționale. Iată cum putem face cu Python.să organizăm lista într-un tabel simplu, cu doar două coloane: numele și adresa de e-mail. Ar trebui să arate ca următorul exemplu:

    #name,emailJohn Johnson,[email protected] Peterson,[email protected]

    codul de mai jos va deschide fișierul și bucla peste rândurile sale linie cu linie, înlocuind {name} cu valoarea din coloana „Nume”.,

    de Intrare:

    După rularea script-ul, vom obține următorul răspuns:

    Sent to John JohnsonSent to Peter Peterson>>> 

    Ieșire

    In Mailtrap inbox, vom vedea două mesaje: unul pentru John Johnson și un altul pentru Peter Peterson, livrate simultan:

    Trimiterea de e-mailuri cu Python prin Gmail

    atunci Când sunteți gata pentru a trimite e-mailuri de la real destinatari, puteți să vă configurați server de producție. De asemenea, depinde de nevoile, obiectivele și preferințele dvs.: localhost sau orice SMTP extern., una dintre cele mai populare opțiuni este Gmail, așa că să aruncăm o privire mai atentă. putem vedea adesea titluri precum „Cum să configurați un cont Gmail pentru dezvoltare”. De fapt, înseamnă că veți crea un nou cont Gmail și îl veți folosi pentru un anumit scop. pentru a putea trimite e-mailuri prin contul Gmail, trebuie să oferiți acces la acesta pentru aplicația dvs. Puteți permite aplicații mai puțin sigure sau puteți profita de Protocolul de autorizare OAuth2. Este un mod mai dificil, dar recomandat din motive de securitate., mai mult ,pentru a utiliza un server Gmail, trebuie să știți:

    • numele serverului = smtp.gmail.com
    • port = 465 pentru conexiunea SSL/TLS (preferată)
    • sau port = 587 pentru conexiunea STARTTLS.
    • nume de utilizator = adresa dvs. de e-mail Gmail
    • parola = parola.dacă aveți tendința de simplitate, atunci puteți utiliza Yagmail, Gmail / SMTP dedicat. Se face trimiterea de e-mail foarte ușor., Comparați exemplele de mai sus cu aceste câteva linii de cod:

      servicii de e-mail tranzacționale

      Gmail este gratuit și utilizat pe scară largă, dar are încă limitări pentru trimiterea de e-mailuri. Dacă nevoile dvs. depășesc cu mult Regulile Gmail, alegeți una dintre opțiunile de servicii tranzacționale sau, după cum se mai numesc, servicii API de e-mail. Python este susținut de marea majoritate a API-urilor de e-mail de încredere, astfel încât să puteți alege în funcție de preferințele și bugetul dvs.,

      Aici sunt unele ghiduri cu privire la trimiterea de e-mailuri cu Python prin lista de cele mai populare servicii:

      • Amazon SES
      • Mailgun
      • Mandril
      • Poștei
      • Sendgrid
      • SocketLabs

      Următorii pași cu e-mailuri în Python

      Am demonstrat doar opțiunile de bază de trimiterea de e-mailuri cu Python, pentru a descrie logica și o serie de capacitățile sale. Pentru a obține rezultate excelente, vă recomandăm să consultați documentația Python și să experimentați doar propriul cod!,

      există o grămadă de diferite cadre Python și biblioteci, care fac crearea de aplicații mai elegant și dedicat. În special, unele dintre ele pot ajuta la îmbunătățirea experienței dvs. cu construirea e-mailuri trimite funcționalitate:

      Cele mai populare cadre sunt:

      1. Balon, care oferă o interfață simplă pentru trimiterea de e-mail— Balon de e-Mail.
      2. Django, care poate fi o opțiune excelentă pentru construirea de șabloane HTML. (Și aici este tutorialul nostru despre trimiterea de e-mailuri cu Django).
      3. Zope vine la îndemână pentru dezvoltarea site-ului web.,
      4. Marrow Mailer este un cadru de livrare e-mail dedicat adăugând diverse configurații utile.
      5. Plotly și Dash sale pot ajuta cu grafice și rapoarte de discuții.