Medan kommersiella e-postklienter erbjuder bekvämligheten med ett användarvänligt gränssnitt, saknar de ofta flexibilitet och anpassningsbarhet som många utvecklare eller innehållsskapare önskar för sin e-post behov.

Var det för att skicka ett tackmeddelande till en ny abonnent på din sociala mediekanal eller lägga till e-postfunktionalitet till ditt senaste projekt, möjligheten att skicka automatiserade meddelanden med SMTP i Python är något som kommer att komma in praktisk.

Läs vidare för att ta reda på hur du kan få ett Python-skript för att skicka e-postmeddelanden som körs på din maskin idag.

Vad är SMTP?

För att uttrycka det enkelt, SMTP, eller Simple Mail Transfer Protocol, är ett kommunikationsprotokoll för e-postservrar att överföra e-post via internet.

Det är en integrerad del av applikationslagret i TCP / IP-sviten, som är en uppsättning protokoll som används för kommunikation över internet eller andra liknande nätverk. I ett nätverk där SMTP implementeras, en process som kallas lagra och vidarebefordra hjälper till att flytta e-post över nätverk.

instagram viewer

Vid varje slutpunkt använder programvara som kallas Mail Transfer Agent (MTA) lagra och vidarebefordra för att underlätta kommunikationen mellan de deltagande SMTP-servrarna. SMTP: s huvudroll är därför helt enkelt att diktera var och hur e-post flyttar från en punkt till en annan i ett nätverk.

Komma igång

Du måste ha ett e-postkonto för att skicka e-postmeddelanden med detta program. Det beror på att vi kommer att använda e-postklientens SMTP-tjänst för att skicka e-post. För den här handledningen använder vi Gmail.

Du kan också använda en lokal SMTP-felsökningsserver för att skicka testmeddelanden, men för närvarande använder vi ett e-postkonto för att skicka e-post eftersom det är mer intuitivt.

Det är möjligt att helt enkelt använda ett befintligt Gmail-konto, men när du spelar med ditt program kan det snart fyllas med testmeddelanden. Det är därför vi rekommenderar att du skapar ett "bortkastat" konto för testning.

Aktivera nu alternativet till tillåta mindre säkra appar för att komma åt ditt Gmail-konto. Detta är en annan anledning att använda ett bortkastat e-postmeddelande eftersom det inte rekommenderas att leka med sekretessinställningarna för din primära e-post.

Skriva e-postmeddelandet i Python

Python 3 levereras förinstallerad med en modul som heter smtplib (förkortning för smtp-bibliotek), som kan användas för att arbeta med SMTP-servrar.

Som alla andra Python-moduler är det första du måste göra att importera smtplib.

importera smtplib

Initiera ett SMTP-objekt

Nu kan du använda smtplib för att skapa ett SMTP-objekt, vilket ger dig det mesta av funktionaliteten hos en konventionell e-postklient. Ett SMTP-objekts funktioner kan dock endast användas via instansmetoder. Så naturligtvis är nästa steg att deklarera en objektinstans.

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

Detta konfigurerar SMTP-objektet att skicka ut e-postmeddelanden med Googles SMTP-server.

Efter detta specificerar vi avsändarens och mottagarens e-postmeddelanden. Här är Gmail-kontot du skapade tidigare till nytta.

emailSender = “senderMail@sender.com”
myThroaway = "myEmail@gmail.com"
emailRecipients = [myThroaway]

En sak att notera här är att mottagarlistan faktiskt är en matris, vilket innebär att den är utformad för att lagra icke-atomära värden. Som ett resultat kan du till och med ange en hel adresslista i det här fältet!

Skriva meddelandet

Förmodligen den enklaste delen av processen, här måste du mata in värden som du normalt skulle lägga till när du skapar ett nytt e-postmeddelande. Detta inkluderar:

  • Avsändarens detaljer
  • Mottagarens detaljer
  • Ämne
  • Meddelandetext

Dessa fält är sammanställda i trippelcitationstecken och avgränsas enligt följande:

newEmail = Från: Från person 
Till: Till personen
Ämne: E-posttest
Det här är e-postmeddelandet.

Skicka e-postmeddelandet

Slutligen kan vi använda sendmail-kommandot för att skicka e-post från din SMTP-server till mottagarens server.

mySMTP.sendmail (emailSender, emailRecipients, newEmail)

Nu finns det bara ett sista steg: omorganisera koden för att förhindra alla förutsebara programkrascher.

Felsökning av ditt Python-e-postprogram

Ibland kan din SMTP-server misslyckas med att upprätta en anslutning med mottagarens eller det kan vara ett problem med att skicka ett e-postmeddelande från en SMTP-port till en annan. I en sådan händelse kan ditt program krascha oväntat.

För att redogöra för sådana möjligheter kan du använda en försök utom blockera och placera felbenägna uttalanden inuti Prova blockera. Hela ditt program, tillsammans med försök-utom-blocket, ska se ut så här:

importera smtplib
emailSender = “senderMail@sender.com”
myThroaway = ‘min_email@gmail.com’
emailRecipients = [myThroaway]
newEmail = Från: Från person
Till: Till personen
Ämne: E-posttest
Det här är e-postmeddelandet.

Prova:
smtpObj = smtplib. SMTP ('smtp.gmail.com')
mySMTP.sendmail (emailSender, emailRecipients, newEmail)
skriva ut ("E-post skickat!")
utom SMTPException:
print ("Fel: Det uppstod ett fel när du skickade din e-post.")

Säkra dina e-postmeddelanden

Om du tänker använda Python i en verklig miljö för att skicka e-post är det viktigt att se till att kommunikationen är säker i båda ändar.

Att använda en enkel SMTP-server med standardporten ger inget krypteringslager för kommunikationen. Det betyder att om någon tredje part lyssnar på ditt nätverk kan den komma åt dina inloggningsuppgifter och informationen i din e-post.

Ett sätt att kringgå detta problem är att använda protokollet TLS (Transport Layer Security) för att kryptera din kommunikation. Detta är samma protokoll som används av större e-postklienter som Gmail och Outlook för att säkerställa att dina e-postmeddelanden aldrig hamnar i fel händer.

För att göra det måste vi göra några mindre ändringar i programmet vi skapade tidigare.

Det första steget är naturligtvis att importera ssl bibliotek tillsammans med smtplib. De ssl biblioteket ger dig möjlighet att skapa en säker SSL-kontext och kommunicera via ett krypterat nätverk genom att ansluta till specifika portar i båda ändar.

En säker SSL-kontext är inget annat än en samling av chiffer, protokollversioner, betrodda certifikat, TLS-alternativ och TLS-tillägg.

Efter detta kan vi ange TLS-porten och lägga till några ssl biblioteksfunktioner för att skapa en säker e-postadress.

Koden, med alla ändringar som gjorts, ser ungefär så ut:

importera smtplib, ssl
smtpServer = "smtp.gmail.com"
port = 587
myEmail = "min_email@gmail.com"
lösenord = "mitt_lösenord"
#email och lösenord kan också vara användarinmatningsfält
context = ssl.create_default_context ()
newEmail = Från: Från person
Till: Till personen
Ämne: E-posttest
Det här är e-postmeddelandet.

Prova:
server = smtplib. SMTP (smtpServer, port)
server.starttls (context = context)
server.login (newEmail, lösenord)
utom undantag som e:
skriva ut ("e-postmeddelandet kunde inte skickas.")
till sist:
server.quit ()

Som tidigare bör du skapa och använda SMTP-instansen i ett försök-undantagsblock för att förhindra alla plötsliga programkrascher.

Vad du kan göra med detta Python-skript

Nu när du har plockat upp den fantastiska och förvånansvärt användbara färdigheten att automatisera e-postmeddelanden med hjälp av kod kan du använda den på vilken plattform som helst som kräver att du skickar e-post till en varierande e-postlista.

Från att använda den på din personliga webbplats för att skicka automatiskt bekräftelsemeddelande till att använda den för att e-posta julkort eller inbjudningar till din familj och vänner, användningen av det här lilla Python-skriptet begränsas endast av din egen kreativitet.

Det här är bara en av de många fantastiska sakerna du kan göra med Python. Med sitt allestädes närvarande utvecklarstöd och lättlärd syntax har det aldrig varit enklare att plocka upp en Python-färdighet.

För att fortsätta bygga coola saker med kod, kolla in vår guide om hur du gör bygg din egen Telegram-bot med Python 3!

E-post
Hur du uppgraderar dina Python- och AI-färdigheter med Keras, Pytorch, Tensorflow och mer

Uppgradera dina programmerings- och webbutvecklingsfärdigheter på Python, Artificial Intelligence, Keras, PyTorch och mer

Relaterade ämnen
  • Programmering
  • Gmail
  • E-posttips
  • Pytonorm
  • Uppgiftsautomatisering
Om författaren
Yash Chellani (8 artiklar publicerade)

Yash är en blivande datavetenskaplig student som älskar att bygga saker och skriva om allt tekniskt. På fritiden gillar han att spela Squash, läsa en kopia av den senaste Murakami och jaga drakar i Skyrim.

Mer från Yash Chellani

Prenumerera på vårt nyhetsbrev

Gå med i vårt nyhetsbrev för tekniska tips, recensioner, gratis e-böcker och exklusiva erbjudanden!

Ett steg till…!

Bekräfta din e-postadress i e-postmeddelandet som vi just skickade till dig.

.