Mens kommersielle e-postklienter tilbyr brukervennligheten til et brukervennlig brukergrensesnitt, mangler de ofte fleksibilitet og tilpassbarhet som mange utviklere eller innholdsskapere ønsker for deres e-post behov.

Det være seg for å sende en takke-e-post til en ny abonnent på din sosiale mediekanal eller legge til e-postfunksjonalitet til det siste prosjektet ditt, muligheten til å sende automatiserte meldinger ved hjelp av SMTP i Python er noe som kommer til å komme inn praktisk.

Les videre for å finne ut hvordan du kan få et Python-skript til å sende e-poster som kjører på maskinen din i dag.

Hva er SMTP?

For å si det enkelt, SMTP, eller Simple Mail Transfer Protocol, er en kommunikasjonsprotokoll for e-postservere å overføre e-post over internett.

Det er en integrert del av applikasjonslaget til TCP / IP-pakken, som er et sett med protokoller som brukes til kommunikasjon over internett eller andre lignende nettverk. I et nettverk der SMTP er implementert, en prosess kjent som lagre og videresende hjelper med å flytte e-post på tvers av nettverk.

Ved hvert sluttpunkt bruker programvare kjent som Mail Transfer Agent (MTA) lagre og videresende for å lette kommunikasjonen mellom de deltakende SMTP-serverne. Hovedrollen til SMTP er derfor ganske enkelt å diktere hvor og hvordan e-post beveger seg fra ett punkt til et annet i et nettverk.

Starter

Du må ha en e-postkonto for å bruke for å sende e-post ved hjelp av dette programmet. Dette er fordi vi vil bruke e-postklientens SMTP-tjeneste til å sende e-post. For denne opplæringen bruker vi Gmail.

Du kan også bruke en lokal SMTP-feilsøkingsserver til å sende test-e-post, men foreløpig bruker vi en e-postkonto til å sende e-post siden det er mer intuitivt.

Det er mulig å bare bruke en eksisterende Gmail-konto, men når du leker med programmet ditt, kan det snart bli fylt opp med test-e-post. Dette er grunnen til at vi anbefaler at du oppretter en 'throwaway' -konto med det formål å teste.

Nå, slå på alternativet til tillat mindre sikre apper for å få tilgang til Gmail-kontoen din. Dette er en annen grunn til å bruke en bortkastet e-post, da det ikke anbefales å leke med personverninnstillingene til din primære e-post.

Skrive e-posten i Python

Python 3 leveres forhåndsinstallert med en modul kalt smtplib (forkortelse for smtp-bibliotek), som kan brukes til å jobbe med SMTP-servere.

Som alle andre Python-moduler, er det første du må gjøre å importere smtplib.

importere smtplib

Initialisere et SMTP-objekt

Nå kan du bruke smtplib til å lage et SMTP-objekt, som vil gi deg det meste av funksjonaliteten til en konvensjonell e-postklient. Imidlertid kan funksjonene til et SMTP-objekt bare brukes via instansemetoder. Så, naturlig nok, er neste trinn å erklære en objektforekomst.

mySMTP = smtplib. SMTP ("smtp.google.com") 

Dette konfigurerer SMTP-objektet til å sende ut e-post ved hjelp av Googles SMTP-server.

Etter dette spesifiserer vi avsender- og mottaker-e-post. Her er Gmail-kontoen du opprettet tidligere, nyttig.

emailSender = “[email protected]
myThroaway = "[email protected]"
emailRecipients = [myThroaway]

En ting å merke seg her er at mottakerlisten faktisk er en matrise, noe som betyr at den er designet for å lagre ikke-atomare verdier. Som et resultat kan du til og med spesifisere en hel adresseliste i dette feltet!

Skrive meldingen

Uten tvil den enkleste delen av prosessen, her må du legge inn verdier som du normalt vil legge til når du skriver en ny e-post. Dette inkluderer:

  • Avsenderens detaljer
  • Mottakers detaljer
  • Emne
  • Meldingslegeme

Disse feltene er satt sammen i trippel anførselstegn og er avgrenset som følger:

newEmail = Fra: Fra person 
Til: Til Person
Emne: E-posttest
Dette er selve e-postmeldingen.

Sende e-post

Til slutt kan vi bruke sendmail-kommandoen til å sende e-posten fra SMTP-serveren din til mottakerens server.

mySMTP.sendmail (emailSender, emailRecipients, newEmail)

Nå er det bare ett siste trinn: omorganisering av koden for å forhindre alle forventede programkrasj.

Feilsøking av Python e-postprogram

Noen ganger kan det hende at SMTP-serveren din ikke klarer å opprette en forbindelse med mottakeren, eller det kan være et problem med å sende en e-post fra en SMTP-port til en annen. I et slikt tilfelle kan programmet krasje uventet.

For å gjøre rede for slike muligheter, kan du bruke en prøv-unntatt blokker og plasser feilutsatte utsagn i prøve blokkere. Hele programmet ditt, sammen med forsøke-unntatt blokken, skal se ut slik:

importere smtplib
emailSender = “[email protected]
myThroaway = ‘[email protected]
emailRecipients = [myThroaway]
newEmail = Fra: Fra person
Til: Til Person
Emne: E-posttest
Dette er selve e-postmeldingen.

prøve:
smtpObj = smtplib. SMTP (‘smtp.gmail.com’)
mySMTP.sendmail (emailSender, emailRecipients, newEmail)
skriv ut (“E-post sendt vellykket!”)
unntatt SMTPException:
print ("Feil: Det oppsto en feil da du sendte e-posten din.")

Sikre e-postene dine

Hvis du har tenkt å bruke Python i virkelige omgivelser for å sende e-post, er det viktig å sørge for at kommunikasjonen er sikker i begge ender.

Å bruke en enkel SMTP-server med standardporten gir ikke noe krypteringslag til kommunikasjonen. Dette betyr at hvis noen tredjepart hører på nettverket ditt, kan de få tilgang til påloggingsinformasjonen din og informasjonen i e-posten din.

En måte å omgå dette problemet er å bruke TLS-protokollen (Transport Layer Security) for å kryptere kommunikasjonen. Dette er den samme protokollen som brukes av store e-postklienter som Gmail og Outlook for å sikre at e-postene dine aldri kommer i feil hender.

For å gjøre det, må vi gjøre noen mindre endringer i programmet vi opprettet tidligere.

Det første trinnet er selvfølgelig å importere ssl biblioteket sammen med smtplib. De ssl biblioteket gir deg muligheten til å opprette en sikker SSL-kontekst og kommunisere over et kryptert nettverk ved å koble til bestemte porter i begge ender.

En sikker SSL-kontekst er bare en samling av krypter, protokollversjoner, klarerte sertifikater, TLS-alternativer og TLS-utvidelser.

Etter dette kan vi spesifisere TLS-porten og legge til noen få ssl biblioteksfunksjoner for å opprette en sikker e-postadresse.

Koden, med alle endringene som er gjort, ser omtrent slik ut:

importere smtplib, ssl
smtpServer = "smtp.gmail.com"
port = 587
myEmail = "[email protected]"
passord = "mitt_passord"
#email og passord kan også være brukerinntastingsfelt
kontekst = ssl.create_default_context ()
newEmail = Fra: Fra person
Til: Til Person
Emne: E-posttest
Dette er selve e-postmeldingen.

prøve:
server = smtplib. SMTP (smtpServer, port)
server.starttls (kontekst = kontekst)
server.login (newEmail, passord)
unntatt unntak som e:
skriv ut ("e-postadressen kunne ikke sendes.")
endelig:
server.quit ()

Som før, bør du opprette og bruke SMTP-forekomsten i en prøve unntatt blokk for å forhindre brå programkrasj.

Hva du kan gjøre med dette Python-skriptet

Nå som du har plukket opp den fantastiske og overraskende nyttige ferdigheten med å automatisere e-postmeldinger ved hjelp av kode, kan du bruke den på hvilken som helst plattform som krever sending av e-post til en mangfoldig adresseliste.

Fra å bruke den på ditt personlige nettsted for å sende automatiske bekreftelses-e-postmeldinger til å bruke den til å sende julekort med e-post eller invitasjoner til familie og venner, er bruken av dette lille Python-skriptet bare begrenset av din egen kreativitet.

Dette er også bare en av de mange fantastiske tingene du kan gjøre med Python. Med sin allestedsnærværende utviklerstøtte og lettlærte syntaks har det aldri vært enklere å hente en Python-ferdighet.

For å fortsette å bygge kule ting med kode, se vår guide om hvordan du gjør det bygg din helt egen Telegram-bot med Python 3!

E-post
Slik oppgraderer du Python- og AI-ferdighetene dine med Keras, Pytorch, Tensorflow og mer

Oppgrader programmerings- og webutviklingsferdighetene dine på Python, Artificial Intelligence, Keras, PyTorch og mer

Relaterte temaer
  • Programmering
  • Gmail
  • Tips om e-post
  • Python
  • Oppgaveautomatisering
Om forfatteren
Yash Chellani (8 artikler publisert)

Yash er en håpefull informatikkstudent som elsker å bygge ting og skrive om alt teknisk. På fritiden liker han å spille Squash, lese en kopi av den nyeste Murakami og jakte drager i Skyrim.

Mer fra Yash Chellani

Abonner på vårt nyhetsbrev

Bli med på nyhetsbrevet vårt for tekniske tips, anmeldelser, gratis e-bøker og eksklusive tilbud!

Ett steg til…!

Bekreft e-postadressen din i e-posten vi nettopp sendte deg.

.