Hvad har du brug for for at sende en e-mail med Python? Nogle grundlæggende programmering og knowledgeeb viden sammen med de elementære Python færdigheder. Vi antager, at du allerede har haft en appebapp bygget med dette sprog, og nu skal du udvide dens funktionalitet med meddelelser eller andre e-mails, der sender. Denne vejledning vil guide dig gennem de mest væsentlige trin i at sende e-mails via en SMTP-server:

  1. konfiguration af en server til test (ved du hvorfor det er vigtigt?,)
    • Lokale SMTP-server
    • Mailtrap falske SMTP-server
  2. Forskellige typer af e-mails: HTML, med billeder og vedhæftede filer
  3. at Sende flere personlige e-mails (Python er bare en uvurderlig for e-mail-automation)
  4. Nogle populære e-mail-indstillinger for afsendelse som Gmail og transactional e-mail service

Serveres med en lang række kode-eksempler!

Bemærk: skrevet og testet på Python 3.7.2.

afsendelse af en e-mail ved hjælp af SMTP

den første gode nyhed om Python er, at den har et indbygget modul til at sende e-mails via SMTP i sit standardbibliotek., Ingen ekstra installationer eller tricks er påkrævet. Du kan importere modulet ved hjælp af den følgende erklæring:

import smtplib

for At sørge for, at modulet er blevet importeret korrekt og får den fulde beskrivelse af dets klasser og argumenter, skal du skrive i en interaktiv Python session:

help(smtplib)

På vores næste skridt er, at vi vil tale lidt om, at servere: at vælge den rigtige løsning og konfigurere den.,

SMTP-server til test af e-mails i Python

Når du opretter en ny app eller tilføje funktionalitet, især når man gør det for første gang, er det vigtigt at eksperimentere på en test server. Her er en kort liste over grunde:

  1. du vil ikke ramme dine venners og kunders indbakker. Dette er afgørende, når du tester bulk e-mail afsendelse eller arbejde med en e-mail-database.
  2. du vil ikke oversvømme din egen indbakke med test e-mails.
  3. dit domæne bliver ikke sortlistet for spam.,

lokal SMTP-server

Hvis du foretrækker at arbejde i det lokale miljø, kan den lokale SMTP-debugging-server være en mulighed. Til dette formål tilbyder Python et smtpd-modul. Det har en DebuggingServer funktion, som vil kassere meddelelser, du sender ud, og vil udskrive dem til stdout. Den er kompatibel med alle operationer systemer.,

Sæt din SMTP-server localhost:1025

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

for at køre SMTP-server på port 25, skal du root privilegier:

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

Det vil hjælpe dig med at kontrollere, om din kode virker, og påpege mulige problemer, hvis der er nogen. Det giver dig dog ikke muligheden for at kontrollere, hvordan din HTML-e-mail-skabelon gengives.,

Falske SMTP-server

Falske SMTP-server, der efterligner et ægte 3rd party web-server. I yderligere eksempler i dette indlæg, vi vil bruge Mailtrap. Ud over at teste e-mail-afsendelse, vil det lade os kontrollere, hvordan e-mailen gengives og vises, gennemgå meddelelsen rå data samt give os en spam-rapport., Mailtrap er meget let at konfigurere: du skal bare kopiere de legitimationsoplysninger, der genereres af appen, og indsætte dem i din kode.

Her er hvordan det ser ud i praksis:

Mailtrap gør tingene endnu nemmere. Gå til afsnittet integrationer i fanen SMTP-indstillinger, og få den brugervenlige skabelon til den enkle meddelelse med dine Mailtrap-legitimationsoplysninger i den., Det er den mest grundlæggende mulighed for at instruere dine Python-script på, hvem der sender hvad til hvem, der er til sendmail() eksempel på metode:

Prøv Mailtrap Gratis

koden ser temmelig ligetil, højre? Lad os se nærmere på det og tilføje nogle fejlhåndtering (se #forklaringerne imellem). For at fange fejl bruger vi blokkene” prøv “og” undtagen”. Se dokumentationen for listen over undtagelser her.,

Når du får den Sendt resultere i Skallen, bør du se din besked i din Mailtrap indbakke:

Afsendelse af HTML-e-mail

I de fleste tilfælde, er du nødt til at tilføje formatering, links, eller billeder til din e-mail-meddelelser. Vi kan simpelthen sætte alle disse med HTML-indholdet. Til dette formål har Python en e-mail-pakke.

Vi vil beskæftige os med mime-meddelelsestypen, som er i stand til at kombinere HTML og almindelig tekst. I Python håndteres det af e-mailen.MIME modul.,

det er bedre at skrive en tekstversion og en HTML-version separat, og derefter flette dem med mimemultipart(“alternativ”) forekomsten. Det betyder, at en sådan meddelelse har to gengivelsesmuligheder i overensstemmelse hermed. Hvis en HTML ikke gengives med succes af en eller anden grund, vil en tekstversion stadig være tilgængelig.

Input:

Output:

Afsendelse af e-mails med vedhæftede filer i Python

næste trin i at mestre sende e-mails med Python er vedhæftelse af filer., Vedhæftede filer er stadig MIME-objekter, men vi er nødt til at kode dem med base64-modulet. Et par vigtige punkter om vedhæftede filer:

  1. Python giver dig mulighed for at vedhæfte tekstfiler, billeder, lydfiler og endda applikationer. Du skal bare bruge den relevante e-mail-klasse som e-mail.mime.lyd.MIMEAudio eller e-mail.mime.billede.MIMEImage. For den fulde information henvises til dette afsnit i Python-dokumentationen. Du kan også kontrollere eksemplerne fra Python for en bedre forståelse.
  2. husk om filstørrelsen: at sende filer over 20 MB er en dårlig praksis.,

i transaktionelle e-mails er PDF-filerne de hyppigst anvendte: vi får normalt kvitteringer, billetter, boardingkort, ordrebekræftelser osv. Så lad os gennemgå, hvordan du sender et boardingkort som en PDF-fil.

Input:

for At vedhæfte flere filer, kan du ringe besked.vedhæft () metode flere gange.

Sådan sendes en e-mail med billeder

billeder, selvom de er en del af meddelelseskroppen, er også vedhæftede filer., Der er tre typer af dem: CID vedhæftede filer (indlejret som en MIME objekt), base64 billeder (inline indlejring), og sammenkædede billeder. Vi har beskrevet deres særegenheder, fordele og ulemper, og kompatibilitet med de fleste e-mail-klienter i dette indlæg.

lad os springe til eksempler.

For at tilføje en CID vedhæftet fil, vil vi skabe en MIME-besked i flere dele med MIMEImage komponent:

Output:

CID billede er vist både som en del af HTML-besked, som en vedhæftet fil., Meddelelser med denne billedtype betragtes ofte som spam: kontroller fanen Analytics i Mailtrap for at se spamhastigheden og anbefalinger om dens forbedring. Mange e – mail – klienter-især Gmail-viser ikke CID-billeder i de fleste tilfælde. Så lad os gennemgå, hvordan du integrerer et base64-kodet billede.

Her vil vi bruge base64-modul og eksperimentere med det samme billede fil:

Output:

Nu er det billede, der er indlejret i en HTML-meddelelse, og ikke til rådighed som vedhæftet fil., Python har kodet vores jpg-billede, og hvis vi går til fanen HTML-kilde, vil vi se den lange billeddatastreng i img src.

Sådan sendes flere e-mails i Python

at sende flere e-mails til forskellige modtagere og gøre dem personlige er det specielle ved e-mails i Python.

for at tilføje flere modtagere kan du bare skrive deres adresser adskilt af et komma, tilføje CC og BCC. Men hvis du arbejder med en bulk email afsendelse, vil Python spare dig med sløjfer.

en af mulighederne er at oprette en database i en .,csv-format (vi antager, at det gemmes i den samme mappe som dit Python-script).

Vi ser ofte vores navne i transaktions-eller endda salgsfremmende eksempler. Her er hvordan vi kan gøre det med Python.

lad os organisere listen i en simpel tabel med kun to kolonner: navn og e-mail-adresse. Det skal se ud som følgende eksempel:

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

– koden nedenfor vil åbne filen og loop over sine rækker, linje for linje, udskiftning af {navn} med værdien fra “navn” kolonnen.,

Input:

Når du kører scriptet, får vi følgende svar:

Sent to John JohnsonSent to Peter Peterson>>> 

Output

I vores Mailtrap indbakke, ser vi to budskaber: en for John Johnson og en anden for Peter Peterson, leveres samtidigt:

Afsendelse af e-mails med Python via Gmail

Når du er klar til at sende e-mails til rigtige modtagere, kan du konfigurere din produktion server. Det afhænger også af dine behov, mål og præferencer: din localhost eller enhver ekstern SMTP.,

en af de mest populære muligheder er Gmail, så lad os se nærmere på det.

Vi kan ofte se titler som “Sådan konfigureres en Gmail-konto til udvikling”. Faktisk betyder det, at du opretter en ny Gmail-konto og vil bruge den til et bestemt formål.

for at kunne sende e-mails via din Gmail-konto skal du give adgang til den til din applikation. Du kan tillade mindre sikre apps eller drage fordel af OAuth2-autorisationsprotokollen. Det er en måde vanskeligere, men anbefales på grund af sikkerhedsårsagerne.,

Yderligere, at bruge en Gmail-server, du har brug for at vide:

  • serverens navn = smtp.gmail.com
  • port = 465 for SSL/TLS-forbindelse (foretrukne)
  • eller port = 587 for STARTTLS-forbindelse.
  • brugernavn = din Gmail-e-mail-adresse
  • adgangskode = din adgangskode.

Hvis du har tendens til enkelhed, kan du bruge Yagmail, den dedikerede Gmail/SMTP. Det gør e-mail-afsendelse virkelig let., Bare sammenlign ovenstående eksempler med disse flere kodelinjer:

Transactional email services

Gmail er gratis og udbredt, men det har stadig begrænsninger for e-mail-afsendelse. Hvis dine behov går langt ud over Gmail-reglerne, skal du vælge mellem en af mulighederne for transaktionstjenester eller som de også kaldes, E-mail-API-tjenester. python understøttes af langt de fleste af de betroede e-mail-API ‘ er, så du kan vælge efter dine præferencer og budget.,

Her er nogle vejledninger på at sende e-mails med Python gennem listen af de mest populære tjenester:

  • Amazon SES
  • Mailgun
  • Mandrill
  • Poststemplet
  • Sendgrid
  • SocketLabs

Næste skridt med e-mails i Python

Vi har vist bare grundlæggende muligheder for at sende e-mails med Python, til at beskrive den logik og en række af dets kapacitet. For at få gode resultater anbefaler vi at gennemgå Python-dokumentationen og bare eksperimentere med din egen kode!,

Der er en masse forskellige Python rammer og biblioteker, som gør at skabe apps, mere elegant og dedikeret. Især kan nogle af dem hjælpe med at forbedre din oplevelse med at opbygge e— mails, der sender funktionalitet:

de mest populære rammer er:

  1. Kolbe, som tilbyder en enkel grænseflade til e-mail-afsendelse-kolbe Mail.
  2. Django, som kan være en god mulighed for at opbygge HTML-skabeloner. (Og her er vores tutorial om at sende e-mails med Django).
  3. Zope er praktisk til websiteebstedsudvikling., Marro.Mailer er en dedikeret postleveringsramme, der tilføjer forskellige nyttige konfigurationer.
  4. Plotly og dens bindestreg kan hjælpe med mailing grafer og rapporter.