Skicka e-postmeddelanden i Python med SMTP

Denna handledning ger en introduktion till SMTP, en Python-modul som används för att skicka e-post. Det kommer också att visa hur man skickar olika e-posttyper som enkla textemails, e-postmeddelanden med bilagor och e-postmeddelanden med HTML-innehåll.

Introduktion till SMTP

SMTP (Simple Mail Transfer Protocol) hanterar sändning och routing av e-post mellan postservrar.

I Python, den smtplib modulen definierar ett SMTP-klientsessionsobjekt som kan användas för att skicka mail till en Internet-maskin med en SMTP- eller ESMTP-lyssnerdemon.

Så här skapar du ett SMTP-objekt.

importera smtplib server = smtplib.SMTP (värd = 'host_address', port = your_port)

Skapa och skicka en enkel e-postadress

Följande skript låter dig skicka ett mail via Gmail SMTP-servern. Google tillåter dock inte inloggning via smtplib eftersom den har flaggat denna typ av inloggning som "mindre säker". För att lösa detta, gå till https://www.google.com/settings/security/lesssecureapps när du är inloggad på ditt Google-konto och "Tillåt mindre säkra appar". Se skärmdump nedan.

Vi följer följande steg för att uppnå denna process:

  • Skapa ett SMTP-objekt för anslutning till servern.
  • Logga in på ditt konto.
  • Ange dina meddelandehuvuden och inloggningsuppgifter.
  • Skapa en MIMEMultipart meddelandeobjekt och bifoga de aktuella rubrikerna till den, dvs Från, Till och Ämne.
  • Fäst meddelandet till meddelandet MIMEMultipart objekt.
  • Slutligen skicka meddelandet.

Denna process är så enkel som visas nedan.

# importera nödvändiga paket från email.mime.multipart import MIMEMultipart från email.mime.text import MIMEText import smtplib # skapa meddelandeobjekt instans msg = MIMEMultipart () message = "Tack" # setup parametrarna för meddelandet password = "your_password" msg ['From'] = "your_address" msg ['Till'] = "till_adress" msg ['Subject'] = "Prenumeration" # lägg till i meddelandekroppen msg.attach (MIMEText (message, plain) skapa server server = smtplib.SMTP ('smtp.gmail.com: 587') server.starttls () # Logga in Referenser för att skicka mail server.login (msg ['Från'], lösenord) # skicka meddelandet via servern . server.sendmail (msg ['Från'], msg ['Till'], msg.as_string ()) server.quit () skriv ut "framgångsrikt skickat email till% s:"% (msg ['To']) 

Observera att adresserna "Till" och "Från" måste inkluderas i meddelandehuvudena.

Skapa och skicka en e-post med en bilaga

I det här exemplet skickar vi ett mail med en bildbilaga. Processen liknar att skicka en vanlig text-e-post.

  • Skapa ett SMTP-objekt för anslutning till servern.
  • Logga in på ditt konto.
  • Ange dina meddelandehuvuden och inloggningsuppgifter.
  • Skapa en MIMEMultipart meddelandeobjekt och bifoga de aktuella rubrikerna till den, dvs Från, Till och Ämne.
  • Läs och bifoga bilden till meddelandet MIMEMultipart objekt.
  • Slutligen skicka meddelandet.
# send_attachment.py # importera nödvändiga paket från email.mime.multipart importera MIMEMultipart från email.MIMEImage import MIMEImage från email.mime.text import MIMEText import smtplib # skapa meddelandeobjekt instans msg = MIMEMultipart () # konfigurera parametrarna i meddelande lösenordet msg ['From'] = "your_address" msg ['Till'] = "till_adress" msg ['Subject'] = "Bilder" # bifoga bild till meddelandekroppen msg.attach (MIMEImage .jpg ") .läs ())) # skapa serverserver = smtplib.SMTP ('smtp.gmail.com: 587') server.starttls () # Logga in Referenser för att skicka mail server.login (msg ['From' ], lösenord) # skicka meddelandet via servern. server.sendmail (msg ['Från'], msg ['Till'], msg.as_string ()) server.quit () skriv ut "framgångsrikt skickat email till% s:"% (msg ['To']) 

De MIMEImage klassen är en underklass av MIMENonMultipart som används för att skapa MIME-meddelandeobjekt för bildtyper.Andra tillgängliga klasser inkluderar
MIMEMessage och MIMEAudio.

Skapa och skicka HTML-e-postmeddelanden

Det första vi ska göra är att skapa en HTML-mall för e-post.

Skapa en HTML-mall

Här är HTML-koden för mallen, och den innehåller två tabellkolumner vardera med en bild och ett förhandsgranskningsinnehåll. Om du föredrar en färdig, professionell lösning, ta våra bästa e-mallar. Vi har ett antal responsiva alternativ med lättanpassade funktioner för att komma igång med.

  Tutsplus Email Nyhetsbrev    

Visa i webbläsare

Evanto Limited

November 2017

Hur man går upp och kör med Vue

I introduktionsposten för denna serie talade vi lite om hur webbdesigners kan dra nytta av att använda Vue. I denna handledning lär vi dig hur du får Vue upp ...

Introducerar Haiku: Design och Skapa Motion

Med rörelse i ökningen bland webbutvecklare så är verktygen som hjälper till att effektivisera sin skapande. Haiku är en fristående ...

Skapa bättre upplevelser för webb och mobil

Avregistrera | Tweet | Visa i webbläsare

Mallen kommer äntligen se ut så här när den är klar:

Nedan finns manuset för att skicka ett email med HTML-innehåll. Innehållet i mallen kommer att vara vårt e-postmeddelande.

importera smtplib importera email.message server = smtplib.SMTP ('smtp.gmail.com:587') email_content = "" "    Tutsplus Email Nyhetsbrev    

Visa i webbläsare

Evanto Limited

November 2017

Hur man går upp och kör med Vue

I introduktionsposten för denna serie talade vi lite om hur webbdesigners kan dra nytta av att använda Vue. I denna handledning lär vi oss att få Vue upp ...

Introducerar Haiku: Design och Skapa Motion

Med rörelse i ökningen bland webbutvecklare så är verktygen som hjälper till att effektivisera sin skapande. Haiku är en fristående ...

Skapa bättre upplevelser för webb och mobil

Avregistrera | Tweet | Visa i webbläsare

msg ['msgid' 'msgid' '' '=' address 'msg =' youraddword 'msg [' To '] =' to_address 'password = "yourpassword" msg. add_header ('Content-Type', 'text / html') msg.set_payload (email_content) s = smtplib.SMTP ('smtp.gmail.com: 587') s.starttls () # Logga in Referenser för att skicka mail s. inloggning (msg ['Från'], lösenord) s.sendmail (msg ['Från'], [msg ['Till']], msg.as_string ())

Kör din kod, och om inget fel uppstår, var e-posten framgångsrik. Gå nu till din inkorg och du ska se din e-post som HTML-innehåll snyggt formatterat.

Slutsats

Denna handledning har täckt det mesta av vad som behövs för att skicka e-post till din ansökan. Det finns flera API-skivor tillgängliga för att skicka e-postmeddelanden, så du behöver inte börja från början, t.ex. SendGrid, men det är också viktigt att förstå grunderna. För mer information, besök Python docs.

Tveka inte att se vad vi har till salu och studera i Envato Market, och fråga eventuella frågor och ge din värdefulla feedback genom att använda foderet nedan.