Mens kommercielle e-mail-klienter tilbyder bekvemmeligheden ved en brugervenlig GUI, mangler de ofte fleksibilitet og tilpasning, som mange udviklere eller indholdsskabere ønsker for deres e-mail behov.
Det være sig for at sende en tak-e-mail til en ny abonnent på din sociale mediekanal eller tilføje e-mail-funktionalitet til dit seneste projekt, muligheden for at sende automatiske meddelelser ved hjælp af SMTP i Python er noget, der kommer til at komme ind praktisk.
Læs videre for at finde ud af, hvordan du kan få et Python-script til at sende e-mails, der kører på din maskine i dag.
Hvad er SMTP?
For at sige det enkelt er SMTP eller Simple Mail Transfer Protocol en kommunikationsprotokol for mailservere til at overføre e-mail over internettet.
Det er en integreret del af applikationslaget i TCP / IP-pakken, som er et sæt protokoller, der bruges til kommunikation over internettet eller andre lignende netværk. I et netværk, hvor SMTP implementeres, kaldes en proces gemme og videresende hjælper med at flytte mail på tværs af netværk.
Ved hvert slutpunkt bruger software kendt som Mail Transfer Agent (MTA) butik og videresendelse til at lette kommunikationen mellem de deltagende SMTP-servere. SMTP's hovedrolle er derfor simpelthen at diktere, hvor og hvordan mail flytter fra et punkt til et andet i et netværk.
Kom godt i gang
Du skal have en e-mail-konto, du kan bruge til at sende e-mails ved hjælp af dette program. Dette skyldes, at vi bruger e-mail-klientens SMTP-tjeneste til at sende e-mails. Til denne vejledning bruger vi Gmail.
Du kan også bruge en lokal SMTP-fejlfindingsserver til at sende test-e-mails, men indtil videre bruger vi en e-mail-konto til at sende e-mails, da det er mere intuitivt.
Det er muligt simpelthen at bruge en eksisterende Gmail-konto, men når du spiller rundt med dit program, kan det snart blive fyldt op med test-e-mails. Derfor anbefaler vi, at du opretter en 'throwaway'-konto med henblik på testning.
Tænd nu indstillingen til tillad mindre sikre apps for at få adgang til din Gmail-konto. Dette er en anden grund til at bruge en smid-e-mail, da det ikke anbefales at lege med privatlivsindstillingerne for din primære e-mail.
Skrivning af e-mail i Python
Python 3 leveres forudinstalleret med et modul kaldet smtplib (forkortelse for smtp-bibliotek), som kan bruges til at arbejde med SMTP-servere.
Som ethvert andet Python-modul er den første ting, du skal gøre, at importere smtplib.
importer smtplib
Initialisering af et SMTP-objekt
Nu kan du bruge smtplib til at oprette et SMTP-objekt, som giver dig det meste af funktionaliteten i en konventionel e-mail-klient. Et SMTP-objekts funktioner kan dog kun bruges via instansmetoder. Så naturligvis er det næste trin at erklære en objektinstans.
mySMTP = smtplib. SMTP ("smtp.google.com")
Dette konfigurerer SMTP-objektet til at sende e-mails ved hjælp af Googles SMTP-server.
Herefter specificerer vi afsender- og modtager-e-mails. Her er hvor den Gmail-konto, du oprettede tidligere, er praktisk.
emailSender = “[email protected]”
myThroaway = "[email protected]"
emailRecipients = [myThroaway]
En ting at bemærke her er, at modtagerlisten faktisk er en matrix, hvilket betyder, at den er designet til at gemme ikke-atomare værdier. Som et resultat kan du endda angive en hel postliste i dette felt!
Skrivning af beskeden
Formentlig den mest ligefremme del af processen, her skal du indtaste værdier, som du normalt tilføjer, når du komponerer en ny e-mail. Dette inkluderer:
- Afsenderens detaljer
- Modtagerens detaljer
- Emne
- Beskedtekst
Disse felter er samlet inden for tredobbelt anførselstegn og afgrænses som følger:
newEmail = Fra: Fra person
Til: Til Person
Emne: E-mail-test
Dette er e-mailens krop.
Afsendelse af e-mail
Endelig kan vi bruge sendmail-kommandoen til at sende mailen fra din SMTP-server til modtagerens server.
mySMTP.sendmail (emailSender, emailRecipients, newEmail)
Nu er der kun et sidste trin: Omorganisering af koden for at forhindre eventuelle forudsigelige programnedbrud.
Fejlfinding af dit Python-e-mail-program
Nogle gange kan din SMTP-server muligvis ikke oprette forbindelse til modtagerens forbindelse, eller der kan være et problem med at sende en e-mail fra en SMTP-port til en anden. I en sådan begivenhed kan dit program muligvis gå ned uventet.
For at redegøre for sådanne muligheder kan du bruge en prøv undtagen blokere og sætte de udsatte fejl udsagn inde i prøve blok. Hele dit program sammen med forsøgs-undtagelsesblokken skal se sådan ud:
importer smtplib
emailSender = “[email protected]”
myThroaway = ‘[email protected]’
emailRecipients = [myThroaway]
newEmail = Fra: Fra person
Til: Til Person
Emne: E-mail-test
Dette er e-mailens krop.
prøve:
smtpObj = smtplib. SMTP (‘smtp.gmail.com’)
mySMTP.sendmail (emailSender, emailRecipients, newEmail)
udskriv (“E-mail sendt med succes!”)
undtagen SMTPException:
print ("Fejl: Der opstod en fejl ved afsendelse af din e-mail.")
Sikring af dine e-mails
Hvis du agter at bruge Python i en reel indstilling til at sende e-mails, er det vigtigt at sikre, at kommunikationen er sikker i begge ender.
Brug af en simpel SMTP-server med standardporten giver ikke noget krypteringslag til kommunikationen. Dette betyder, at hvis en tredjepart lytter ind på dit netværk, kan den få adgang til dine loginoplysninger og oplysningerne i din e-mail.
En måde at omgå dette problem på er at bruge protokollen TLS (Transport Layer Security) til at kryptere din kommunikation. Dette er den samme protokol, der bruges af større e-mail-klienter som Gmail og Outlook for at sikre, at dine e-mails aldrig falder i de forkerte hænder.
For at gøre det skal vi foretage et par mindre ændringer i det program, vi oprettede tidligere.
Det første trin er selvfølgelig at importere ssl bibliotek sammen med smtplib. Det ssl bibliotek giver dig mulighed for at oprette en sikker SSL-kontekst og kommunikere over et krypteret netværk ved at oprette forbindelse til bestemte porte i begge ender.
En sikker SSL-kontekst er intet andet end en samling af cifre, protokolversioner, pålidelige certifikater, TLS-indstillinger og TLS-udvidelser.
Efter dette kan vi specificere TLS-porten og tilføje nogle få ssl biblioteksfunktioner til at oprette en sikker e-mailer.
Koden med alle foretagne ændringer ser sådan ud:
import smtplib, ssl
smtpServer = "smtp.gmail.com"
port = 587
myEmail = "[email protected]"
password = "mit_adgangskode"
#email og adgangskode kan også være brugerinputfelter
kontekst = ssl.create_default_context ()
newEmail = Fra: Fra person
Til: Til Person
Emne: E-mail-test
Dette er e-mailens krop.
prøve:
server = smtplib. SMTP (smtpServer, port)
server.starttls (kontekst = kontekst)
server.login (newEmail, adgangskode)
undtagen undtagelse som e:
print ("e-mailen kunne ikke sendes.")
langt om længe:
server.quit ()
Som før skal du oprette og bruge SMTP-forekomsten i en prøve undtagen blok for at forhindre eventuelle pludselige programnedbrud.
Hvad du kan gøre med dette Python-script
Nu hvor du har hentet den fantastiske og overraskende nyttige evne til at automatisere e-mails ved hjælp af kode, kan du anvende den på enhver platform, der kræver afsendelse af e-mails til en forskelligartet postliste.
Fra at bruge det på dit personlige websted til at sende automatiske bekræftelses-e-mails til at bruge det til e-mail til julekort eller invitationer til din familie og venner, brugen af dette lille Python-script er kun begrænset af din egen kreativitet.
Dette er også bare en af de mange fantastiske ting, du kan gøre med Python. Med sin allestedsnærværende understøttelse af udviklere og let at lære syntaks har det aldrig været nemmere at hente en Python-færdighed.
For at fortsætte med at opbygge seje ting med kode, se vores guide til, hvordan du gør det opbyg din helt egen Telegram-bot med Python 3!
Opgrader dine programmerings- og webudviklingsfærdigheder på Python, Artificial Intelligence, Keras, PyTorch og meget mere
- Programmering
- Gmail
- E-mail-tip
- Python
- Opgaveautomatisering
Yash er en ambitiøs datalogistudent, der elsker at bygge ting og skrive om alt det tekniske. På fritiden kan han lide at spille Squash, læse en kopi af den nyeste Murakami og jage drager i Skyrim.
Abonner på vores nyhedsbrev
Deltag i vores nyhedsbrev for tekniske tip, anmeldelser, gratis e-bøger og eksklusive tilbud!
Et trin mere !!!
Bekræft din e-mail-adresse i den e-mail, vi lige har sendt dig.