Hoewel commerciële e-mailclients het gemak van een gebruiksvriendelijke GUI bieden, missen ze vaak de flexibiliteit en aanpasbaarheid die veel ontwikkelaars of makers van inhoud wensen voor hun e-mailberichten behoeften.
Of het nu gaat om het sturen van een bedankmail naar een nieuwe abonnee op je socialemediakanaal of om e-mailfunctionaliteit toe te voegen aan uw nieuwste project, is de mogelijkheid om geautomatiseerde berichten te verzenden met behulp van SMTP in Python iets dat zeker zal binnenkomen handig.
Lees verder om erachter te komen hoe u een Python-script kunt krijgen om vandaag e-mails te verzenden die op uw computer worden uitgevoerd.
Wat is SMTP?
Simpel gezegd: SMTP, of Simple Mail Transfer Protocol, is een communicatieprotocol waarmee e-mailservers e-mail via internet kunnen verzenden.
Het is een integraal onderdeel van de applicatielaag van de TCP / IP-suite, een set protocollen die wordt gebruikt voor communicatie via internet of andere soortgelijke netwerken. In een netwerk waar SMTP is geïmplementeerd, een proces dat bekend staat als
opslaan en doorsturen helpt bij het verplaatsen van e-mail over netwerken.Op elk eindpunt gebruikt software die bekend staat als Mail Transfer Agent (MTA) opslag en doorsturen om de communicatie tussen de deelnemende SMTP-servers te vergemakkelijken. De belangrijkste rol van SMTP is daarom simpelweg te dicteren waar en hoe e-mail zich van het ene punt naar het andere in een netwerk verplaatst.
Beginnen
U moet een e-mailaccount hebben om met dit programma e-mails te kunnen verzenden. Dit komt omdat we de SMTP-service van de e-mailclient gebruiken om e-mails te verzenden. Voor deze tutorial gebruiken we Gmail.
U kunt ook een lokale SMTP-foutopsporingsserver gebruiken om test-e-mails te verzenden, maar voorlopig gebruiken we een e-mailaccount om e-mails te verzenden, aangezien dit intuïtiever is.
Het is mogelijk om gewoon een bestaand Gmail-account te gebruiken, maar terwijl je met je programma speelt, kan het snel vol komen te zitten met test-e-mails. Daarom raden we aan om een ‘wegwerp’-account te maken voor testdoeleinden.
Schakel nu de optie in om minder veilige apps toestaan om toegang te krijgen tot uw Gmail-account. Dit is nog een reden om een wegwerp-e-mail te gebruiken, aangezien het niet wordt aanbevolen om te spelen met de privacy-instellingen van uw primaire e-mailadres.
De e-mail schrijven in Python
Python 3 is vooraf geïnstalleerd met een module genaamd smtplib (afkorting van smtp-bibliotheek), die kan worden gebruikt om met SMTP-servers te werken.
Net als elke andere Python-module, is het eerste dat u moet doen, smtplib importeren.
importeer smtplib
Initialiseren van een SMTP-object
Nu kunt u smtplib gebruiken om een SMTP-object te maken, waarmee u de meeste functionaliteit van een conventionele e-mailclient krijgt. De functies van een SMTP-object kunnen echter alleen worden gebruikt via instantiemethoden. De volgende stap is dus natuurlijk het declareren van een objectinstantie.
mySMTP = smtplib. SMTP ("smtp.google.com")
Dit configureert het SMTP-object om e-mails te verzenden via de SMTP-server van Google.
Hierna specificeren we de e-mails van de afzender en de ontvanger. Hier is waar het Gmail-account dat u eerder hebt gemaakt, van pas komt.
emailSender = "[email protected]"
myThroaway = "[email protected]"
emailRecipients = [myThroaway]
Een ding om hier op te merken is dat de lijst met ontvangers eigenlijk een array is, wat betekent dat deze is ontworpen om niet-atomaire waarden op te slaan. Hierdoor kunt u in dit veld zelfs een hele mailinglijst specificeren!
Het bericht schrijven
Misschien wel het meest eenvoudige deel van het proces, hier moet u waarden invoeren die u normaal gesproken zou toevoegen bij het opstellen van een nieuwe e-mail. Dit bevat:
- Gegevens van de afzender
- Gegevens van de ontvanger
- Onderwerpen
- Bericht lichaam
Deze velden staan tussen drie aanhalingstekens en worden als volgt afgebakend:
newEmail = Van: van persoon
Aan: aan persoon
Onderwerp: E-mailtest
Dit is de hoofdtekst van de e-mail.
Verzenden van de e-mail
Ten slotte kunnen we de opdracht sendmail gebruiken om de e-mail van uw SMTP-server naar de server van de ontvanger te sturen.
mySMTP.sendmail (emailSender, emailRecipients, newEmail)
Nu is er nog maar een laatste stap: het opnieuw organiseren van de code om te voorkomen dat het programma vastloopt.
Problemen met uw Python-e-mailprogramma oplossen
Soms kan uw SMTP-server geen verbinding maken met die van de ontvanger, of kan er een probleem zijn met het verzenden van een e-mail van de ene SMTP-poort naar de andere. In dat geval kan uw programma onverwachts crashen.
Om rekening te houden met dergelijke mogelijkheden, kunt u een probeer behalve block en plaats de foutgevoelige statements in het proberen blok. Je hele programma, samen met het try-behalve-blok, zou er ongeveer zo uit moeten zien:
importeer smtplib
emailSender = "[email protected]"
myThroaway = ‘[email protected]’
emailRecipients = [myThroaway]
newEmail = Van: van persoon
Aan: aan persoon
Onderwerp: E-mailtest
Dit is de hoofdtekst van de e-mail.
proberen:
smtpObj = smtplib. SMTP (‘smtp.gmail.com’)
mySMTP.sendmail (emailSender, emailRecipients, newEmail)
print ("E-mail succesvol verzonden!")
behalve SMTPException:
print ("Fout: er is een fout opgetreden bij het verzenden van uw e-mail.")
Uw e-mails beveiligen
Als u van plan bent om Python in een echte omgeving te gebruiken om e-mails te verzenden, is het belangrijk om ervoor te zorgen dat de communicatie aan beide kanten veilig is.
Het gebruik van een eenvoudige SMTP-server met de standaardpoort biedt geen coderingslaag voor de communicatie. Dit betekent dat als een derde partij meeluistert op uw netwerk, deze toegang heeft tot uw inloggegevens en de informatie in uw e-mail.
Een manier om dit probleem te omzeilen, is door het TLS-protocol (Transport Layer Security) te gebruiken om uw communicatie te versleutelen. Dit is hetzelfde protocol dat wordt gebruikt door grote e-mailclients zoals Gmail en Outlook om ervoor te zorgen dat uw e-mails nooit in verkeerde handen vallen.
Om dit te doen, moeten we een paar kleine wijzigingen aanbrengen in het programma dat we eerder hebben gemaakt.
De eerste stap is natuurlijk om het ssl bibliotheek samen met smtplib. De ssl bibliotheek geeft u de mogelijkheid om een veilige SSL-context te creëren en te communiceren via een gecodeerd netwerk door verbinding te maken met specifieke poorten aan beide uiteinden.
Een veilige SSL-context is niets anders dan een verzameling cijfers, protocolversies, vertrouwde certificaten, TLS-opties en TLS-extensies.
Hierna kunnen we de TLS-poort specificeren en er een paar toevoegen ssl bibliotheekfuncties om een veilige e-mailer te maken.
De code, met alle aangebrachte wijzigingen, ziet er ongeveer zo uit:
importeer smtplib, ssl
smtpServer = "smtp.gmail.com"
poort = 587
myEmail = "[email protected]"
password = "my_password"
#email en wachtwoord kunnen ook gebruikersinvoervelden zijn
context = ssl.create_default_context ()
newEmail = Van: van persoon
Aan: aan persoon
Onderwerp: E-mailtest
Dit is de hoofdtekst van de e-mail.
proberen:
server = smtplib. SMTP (smtpServer, poort)
server.starttls (context = context)
server.login (nieuw e-mailadres, wachtwoord)
behalve uitzondering als e:
print ("de e-mail kon niet worden verzonden.")
Tenslotte:
server.quit ()
Net als voorheen moet u de SMTP-instantie in een try-behalve-blok maken en gebruiken om abrupte programma-crashes te voorkomen.
Wat u kunt doen met dit Python-script
Nu je de geweldige en verrassend nuttige vaardigheid hebt geleerd van het automatiseren van e-mails met behulp van code, kun je deze toepassen op elk platform waarvoor e-mails naar een diverse mailinglijst moeten worden gestuurd.
Van het gebruik ervan op uw persoonlijke website om automatische bevestigingsmails te verzenden tot het gebruik ervan om kerstkaarten te e-mailen of uitnodigingen voor uw familie en vrienden, het gebruik van dit kleine Python-script wordt alleen beperkt door uw eigen script creativiteit.
Dit is ook slechts een van de vele geweldige dingen die u met Python kunt doen. Met zijn alomtegenwoordige ondersteuning voor ontwikkelaars en gemakkelijk te leren syntaxis, is het oppikken van een Python-vaardigheid nog nooit zo eenvoudig geweest.
Om coole dingen met code te blijven bouwen, bekijk je onze gids over hoe bouw je eigen Telegram-bot met Python 3!
Upgrade uw programmeer- en webontwikkelingsvaardigheden op Python, Artificial Intelligence, Keras, PyTorch en meer
- Programmeren
- Gmail
- E-mailtips
- Python
- Taakautomatisering
Yash is een aspirant-student informatica die dol is op dingen bouwen en schrijven over alles wat met technologie te maken heeft. In zijn vrije tijd speelt hij graag squash, leest hij een exemplaar van de nieuwste Murakami en jaagt hij op draken in Skyrim.
Abonneer op onze nieuwsbrief
Word lid van onze nieuwsbrief voor technische tips, recensies, gratis e-boeken en exclusieve deals!
Nog een stap…!
Bevestig uw e-mailadres in de e-mail die we u zojuist hebben gestuurd.