de Arjun Krishna Babu

Cum să trimiteți e-mailuri folosind Python

Trimite e mailuri folosind Python

Ca un exercițiu de învățare, am săpat recent în Python 3 pentru a vedea cum aș putea declanșa o grămadă de e-mailuri. Poate exista metode mai simple de a face acest lucru într-un mediu de producție, dar următoarele au funcționat bine pentru mine.

Deci, iată un scenariu: aveți numele și adresele de e-mail ale unui grup de contacte. Și doriți să trimiteți un mesaj fiecăruia dintre aceste contacte, în timp ce adăugați un “Dragă [name]” în partea de sus a mesajului.

Din simplitate, puteți stoca detaliile de contact într-un fișier, mai degrabă decât într-o bază de date. De asemenea, puteți stoca șablonul mesajului pe care doriți să îl trimiteți într-un fișier.

smtplib modulul Python este practic tot ce aveți nevoie pentru a trimite e-mailuri simple, fără nicio linie de subiect sau astfel de informații suplimentare. Dar pentru real e-mailuri, aveți nevoie de un subiect și de o mulțime de informații – poate chiar imagini și atașamente.

Aici este Python’s pachet de e-mail vine. Rețineți că nu este posibil să trimiteți un e-mail folosind email pachet singur. Ai nevoie de o combinație a ambelor email și smtplib.

ad-banner

Asigurați-vă că verificați documentația oficială cuprinzătoare pentru ambele.

Iată patru pași de bază pentru trimiterea e-mailurilor folosind Python:

  1. Configurați serverul SMTP și conectați-vă la contul dvs.
  2. Creați MIMEMultipart obiect de mesaj și încărcați-l cu anteturile corespunzătoare pentru From, To, și Subject câmpuri.
  3. Adăugați corpul mesajului.
  4. Trimiteți mesajul utilizând obiectul server SMTP.

Acum, lasă-mă să te ghidez prin tot procesul.

Să presupunem că aveți un fișier de contacte mycontacts.txt după cum urmează:

user@computer ~ $ cat mycontacts.txt
john johndoe@example.com
katie katie2016@example.com

Fiecare linie reprezintă un singur contact. Avem numele urmat de adresa de e-mail. Stoc totul cu litere mici. Voi lăsa logica de programare să convertească orice câmpuri în majusculă sau frază, dacă este necesar. Toate acestea sunt destul de ușoare în Python.

Apoi, avem fișierul șablon de mesaj message.txt.

user@computer ~ $ cat message.txt 

Dear ${PERSON_NAME}, 

This is a test message. 
Have a great weekend! 

Yours Truly

Observați cuvântul „${PERSON_NAME}”? Aceasta este o șir șablon în Python. Șirurile șablon pot fi ușor înlocuite cu alte șiruri; în acest exemplu, ${PERSON_NAME} va fi înlocuit cu numele real al persoanei, așa cum veți vedea în scurt timp.

Acum să începem cu codul Python. În primul rând, trebuie să citim contactele din mycontacts.txt fişier. La fel de bine am putea generaliza acest bit în propria sa funcție.

Functia get_contacts() ia ca argument un nume de fișier. Va deschide fișierul, va citi fiecare rând (adică fiecare contact), îl va împărți în nume și e-mail, apoi le va adăuga în două liste separate. În cele din urmă, cele două liste sunt returnate din funcție.

De asemenea, avem nevoie de o funcție pentru a citi într-un fișier șablon (cum ar fi message.txt) și returnează a Template obiect realizat din conținutul său.

La fel ca funcția anterioară, aceasta ia ca nume un fișier ca argument.

Pentru a trimite e-mailul, trebuie să utilizați SMTP (Simple Mail Transfer Protocol). După cum sa menționat mai devreme, Python oferă biblioteci pentru a gestiona această sarcină.

În fragmentul de cod de mai sus, importați fișierul smtplib și apoi crearea unui Instanță SMTP care încapsulează o conexiune SMTP. Ia ca parametru adresa gazdei și un număr de port, ambele depinzând în totalitate de setările SMPT ale furnizorului dvs. de servicii de e-mail. De exemplu, în cazul Outlook, linia 4 de mai sus ar fi în schimb:

s = smtplib.SMTP(host="smtp-mail.outlook.com", port=587)

Ar trebui să utilizați adresa gazdei și numărul de port al furnizorului de servicii de e-mail pentru ca totul să funcționeze.

MY_ADDRESS și PASSWORD mai sus sunt două variabile care conțin adresa completă de e-mail și parola contului pe care îl veți folosi.

Acum ar fi un moment bun pentru a prelua informațiile de contact și șabloanele de mesaje folosind funcțiile pe care le-am definit mai sus.

names, emails = get_contacts('mycontacts.txt')  # read contacts
message_template = read_template('message.txt')

Acum, pentru fiecare dintre aceste contacte, să trimitem e-mailul separat.

Pentru fiecare name și email (din fișierul de contacte), creați un fișier MIMEMultipart obiect, configurarea From, To, Subject anteturi de tip conținut ca dicționar de cuvinte cheie și apoi atașarea corpului mesajului la MIMEMultipart obiect ca text simplu. Poate doriți să citiți documentația pentru a afla mai multe despre alte tipuri MIME cu care puteți experimenta.

De asemenea, rețineți că pe linia 10 de mai sus, înlocuiesc ${PERSON_NAME} cu numele real extras din fișierul de contacte folosind mecanism de șablonare în Python.

În acest exemplu anume șterg fișierul MIMEMultipart obiect și recreați-l de fiecare dată când iterați prin buclă.

Odată ce ați terminat, puteți trimite mesajul folosind instrumentul la îndemână Trimite mesaj() funcția obiectului SMTP pe care l-ați creat anterior.

Iată codul complet:

Gata! Cred că codul este acum destul de clar.

Simțiți-vă liber să îl copiați și să-l modificați după cum este necesar.

În afară de documentele oficiale Python, aș dori să menționez și această resursă care m-a ajutat foarte mult.

Codificare fericita 🙂

Am publicat inițial acest articol aici. Dacă ți-a plăcut acest articol, te rugăm să lovești inima mică de mai jos. Mulțumiri!