E-mails verzenden in Python met SMTP

Deze tutorial geeft een inleiding tot SMTP, een Python-module die wordt gebruikt voor het verzenden van e-mail. Het toont ook hoe verschillende e-mailtypen kunnen worden verzonden, zoals e-mails met eenvoudige tekst, e-mails met bijlagen en e-mails met HTML-inhoud.

Inleiding tot SMTP

Het Simple Mail Transfer Protocol (SMTP) zorgt voor het verzenden en routeren van e-mail tussen e-mailservers.

In Python, de smtplib module definieert een SMTP-clientsessieobject dat kan worden gebruikt om e-mail te verzenden naar elke internetmachine met een SMTP- of ESMTP-listener daemon.

Hier ziet u hoe u een SMTP-object maakt.

import smtplib server = smtplib.SMTP (host = 'host_address', poort = jouw_poort)

Maak en verzend een eenvoudige e-mail

Met het volgende script kunt u een e-mail verzenden via de Gmail SMTP-server. Google staat echter niet toe om in te loggen via smtplib omdat het dit type login heeft gemarkeerd als "minder veilig". Om dit op te lossen, gaat u naar https://www.google.com/settings/security/lesssecureapps terwijl u bent aangemeld bij uw Google-account en 'Sta minder goed beveiligde apps toe'. Zie screenshot hieronder.

We zullen de volgende stappen volgen om dit proces te voltooien:

  • Maak een SMTP-object voor verbinding met de server.
  • Log in op jouw account.
  • Definieer uw berichtkoppen en inloggegevens.
  • Maak een MIMEMultipart berichtobject en voeg de relevante berichtkoppen eraan toe, zoals Van, Aan en Onderwerp.
  • Voeg het bericht toe aan het bericht MIMEMultipart voorwerp.
  • Stuur ten slotte het bericht.

Dit proces is zo eenvoudig als hieronder weergegeven.

# import noodzakelijke pakketten van email.mime.multipart import MIMEMultipart van email.mime.text import MIMEText import smtplib # create message object instance msg = MIMEMultipart () message = "Thank you" # stel de parameters van het berichtwachtwoord in = "your_password" msg ['From'] = "your_address" msg ['To'] = "to_address" msg ['Subject'] = "Abonnement" # voeg in het bericht body toe msg.attach (MIMEText (message, 'plain')) # create server server = smtplib.SMTP ('smtp.gmail.com: 587') server.starttls () # Aanmeldingsreferenties voor het verzenden van de mail server.login (msg ['From'], wachtwoord) # stuur het bericht via de server . server.sendmail (msg ['Van'], msg ['To'], msg.as_string ()) server.quit () print "succesvol verzonden e-mail naar% s:"% (msg ['To']) 

Houd er rekening mee dat de adressen 'Aan' en 'Van' expliciet in de berichtkoppen moeten worden opgenomen.

Maak en verzend een e-mail met een bijlage

In dit voorbeeld gaan we een e-mail sturen met een afbeeldingsbijlage. Het proces is vergelijkbaar met het verzenden van e-mail met platte tekst.

  • Maak een SMTP-object voor verbinding met de server.
  • Log in op jouw account.
  • Definieer uw berichtkoppen en inloggegevens.
  • Maak een MIMEMultipart berichtobject en voeg de relevante berichtkoppen eraan toe, zoals Van, Aan en Onderwerp.
  • Lees en bevestig de afbeelding aan het bericht MIMEMultipart voorwerp.
  • Stuur ten slotte het bericht.
# import_attachment.py # importeer noodzakelijke pakketten van email.mime.multipart importeer MIMEMultipart van email.MIMEImage-import MIMEImage van email.mime.text import MIMEText import smtplib # create message object instance msg = MIMEMultipart () # stel de parameters van het berichtwachtwoord in = "your_password" msg ['From'] = "uw_adres" msg ['To'] = "to_address" msg ['Subject'] = "Foto's" # afbeelding toevoegen aan bericht body msg.attach (MIMEImage (bestand ("google .jpg "). read ())) # create server server = smtplib.SMTP ('smtp.gmail.com: 587') server.starttls () # Aanmeldingsgegevens voor het verzenden van de mail server.login (msg ['Van' ], wachtwoord) # verstuur het bericht via de server. server.sendmail (msg ['Van'], msg ['To'], msg.as_string ()) server.quit () print "succesvol verzonden e-mail naar% s:"% (msg ['To']) 

De MIMEImage class is een subklasse van MIMENonMultipart die wordt gebruikt om MIME-berichtobjecten van afbeeldingstypen te maken.Andere beschikbare klassen zijn onder andere
MIMEMessage en MIMEAudio.

HTML-e-mails maken en verzenden

Het eerste dat we gaan doen, is een HTML-e-mailsjabloon maken.

Maak een HTML-sjabloon

Hier is de HTML-code voor de sjabloon en deze bevat twee tabelkolommen met elk een afbeelding en een preview-inhoud. Als u de voorkeur geeft aan een kant-en-klare, professionele oplossing, kunt u onze beste e-mailsjablonen gebruiken. We hebben een aantal responsieve opties met eenvoudig aan te passen functies om mee aan de slag te gaan.

  Tutsplus e-mailnieuwsbrief    

Bekijken in browser

Evanto Limited

November 2017

Hoe kan ik opstaan ​​en werken met Vue

In de inleidende post voor deze serie hebben we een beetje gesproken over hoe webontwerpers kunnen profiteren door Vue te gebruiken. In deze tutorial leren we hoe je Vue ophaalt ...

Introductie van Haiku: ontwerp en maak beweging

Met de opkomst van webontwikkelaars zijn ook de tools die helpen de creatie ervan te stroomlijnen. Haiku is een stand-alone ...

Ontwerp betere ervaringen voor web en mobiel

Afmelden | Tweet | Bekijken in browser

De sjabloon ziet er uiteindelijk als volgt uit:

Hieronder staat het script voor het verzenden van een e-mail met HTML-inhoud. De inhoud van de sjabloon zal ons e-mailbericht zijn.

import smtplib import email.message server = smtplib.SMTP ('smtp.gmail.com:587') email_content = "" "    Tutsplus e-mailnieuwsbrief    

Bekijken in browser

Evanto Limited

November 2017

Hoe kan ik opstaan ​​en werken met Vue

In de inleidende post voor deze serie hebben we een beetje gesproken over hoe webontwerpers kunnen profiteren door Vue te gebruiken. In deze tutorial leren we Vue op te halen ...

Introductie van Haiku: ontwerp en maak beweging

Met de opkomst van webontwikkelaars zijn ook de tools die helpen de creatie ervan te stroomlijnen. Haiku is een stand-alone ...

Ontwerp betere ervaringen voor web en mobiel

Afmelden | Tweet | Bekijken in browser

"" "msg = email.message.Message () msg ​​['Subject'] = 'Tutsplus Newsletter' msg ['From'] = 'youraddress' msg ['To'] = 'to_address' password =" yourpassword "msg. add_header ('Inhoudstype', 'tekst / html') msg.set_payload (email_content) s = smtplib.SMTP ('smtp.gmail.com: 587') s.starttls () # Aanmeldingsgegevens voor het verzenden van de e-mails. login (msg ['From'], wachtwoord) s.sendmail (msg ['From'], [msg ['To']], msg.as_string ())

Voer uw code uit en als er geen fout optreedt, is de e-mail succesvol verlopen. Ga nu naar uw inbox en u zou uw e-mail moeten zien als HTML-inhoud die netjes is opgemaakt.

Conclusie

Deze zelfstudie bevat het grootste deel van wat nodig is om e-mails voor uw toepassing te verzenden. Er zijn verschillende API's beschikbaar voor het verzenden van e-mails, zodat u niet helemaal opnieuw hoeft te beginnen, bijvoorbeeld SendGrid, maar het is ook belangrijk om de basisprincipes te begrijpen. Ga naar de documentatie van Python voor meer informatie.

Aarzel niet om te zien wat we te koop aanbieden en om te studeren in Envato Market, en stel vragen en geef waardevolle feedback via de onderstaande feed.