Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> Python

E-mail verzenden in Python met SMTP: Snelle & Eenvoudige Gids

Simple Mail Transfer Protocol (SMTP) is een protocol dat het versturen van e-mail en het routeren van e-mail tussen mailservers afhandelt.

Python biedt de smtplib-module, die een SMTP-clientsessie-object definieert dat gebruikt kan worden om mail te sturen naar elke internetmachine met een SMTP- of ESMTP-listener-daemon.

Hier is een eenvoudige syntaxis om een SMTP-object aan te maken, dat later gebruikt kan worden om een e-mail te sturen:

import smtplib
smtpObj = smtplib.SMTP([host[, port[, local_hostname]]])

Details van de parameters:

  • host - Dit is de host waarop uw SMTP-server draait. U kunt het IP-adres van de host of een domeinnaam zoals tutorialspoint.com opgeven. Dit is een optioneel argument.

  • port - Als u het host-argument opgeeft, moet u een poort opgeven waar de SMTP-server luistert. Meestal is dit poort 25.

  • local_hostname - Als uw SMTP-server op uw lokale machine draait, kunt u gewoon localhost als deze optie opgeven.

Een SMTP-object heeft een instantie-methode genaamd sendmail, die doorgaans gebruikt wordt om het werk van het mailen van een bericht te doen. Het neemt drie parameters:

  • De afzender - Een string met het adres van de afzender.

  • De ontvangers - Een lijst van strings, één voor elke ontvanger.

  • Het bericht - Een bericht als een string geformatteerd zoals gespecificeerd in de diverse RFC's.

Voorbeeld

Hier is een eenvoudige manier om één e-mail te sturen met een Python-script. Probeer het eens:

#!/usr/bin/python
import smtplib

sender = 'from@fromdomain.com'
receivers = ['to@todomain.com']

message = """From: From Person 
To: To Person 
Subject: SMTP e-mail test

This is a test e-mail message.
"""

try:
    smtpObj = smtplib.SMTP('localhost')
    smtpObj.sendmail(sender, receivers, message)
    print "Successfully sent email"
except SMTPException:
    print "Error: unable to send email"

Hier heeft u een basis e-mail in message geplaatst, met behulp van een trippel quote, rekening houdend met het correct formatteren van de headers. Een e-mail vereist een From, To en Subject header, gescheiden van de body van de e-mail met een lege regel.

Om de mail te versturen gebruikt u smtpObj om verbinding te maken met de SMTP-server op de lokale machine en vervolgens de sendmail-methode samen met het bericht, het van-adres en het bestemmingadres als parameters (hoewel de van- en naar-adressen binnen de e-mail zelf staan, worden deze niet altijd gebruikt om mail te routeren).

Als u geen SMTP-server op uw lokale machine draait, kunt u de smtplib-client gebruiken om te communiceren met een externe SMTP-server. Tenzij u een webmail-service gebruikt (zoals Hotmail of Yahoo! Mail), moet uw e-mailprovider u de uitgaande mailservergegevens hebben verstrekt die u kunt opgeven als volgt:

smtplib.SMTP('mail.uw-domein.com', 25)

Een HTML e-mail versturen met Python

Wanneer u een tekstbericht verstuurt met Python, worden alle inhoud als platte tekst behandeld. Zelfs als u HTML-tags in een tekstbericht opneemt, wordt het weergegeven als platte tekst en worden HTML-tags niet geformatteerd volgens HTML-syntaxis. Maar Python biedt de optie om een HTML-bericht als daadwerkelijk HTML-bericht te versturen.

Tijdens het versturen van een e-mailbericht kunt u een MIME-versie, content-type en character set opgeven om een HTML e-mail te versturen.

Voorbeeld

Hieronder volgt het voorbeeld om HTML-inhoud als e-mail te versturen. Probeer het eens:

#!/usr/bin/python
import smtplib

message = """From: From Person 
To: To Person 
MIME-Version: 1.0
Content-type: text/html
Subject: SMTP HTML e-mail test

This is an e-mail message to be sent in HTML format
This is HTML message.

This is headline.

""" try: smtpObj = smtplib.SMTP('localhost') smtpObj.sendmail(sender, receivers, message) print "Successfully sent email" except SMTPException: print "Error: unable to send email"

Bijlagen als E-mail Versturen

Om een e-mail met gemengde inhoud te versturen, moet u de Content-type-header instellen op multipart/mixed. Vervolgens kunnen tekst- en bijlagsecties binnen grenzen worden gespecificeerd.

Een grens begint met twee streepjes gevolgd door een uniek nummer, dat niet in het berichtendeel van de e-mail mag voorkomen. Een eindgrens die de laatste sectie van de e-mail aanduidt, moet ook eindigen met twee streepjes.

Bijgevoegde bestanden moeten gecodeerd worden met de pack("m")-functie om base64-codering te hebben voordat ze worden verzonden.

Voorbeeld

Hieronder volgt het voorbeeld dat een bestand /tmp/test.txt als bijlage verstuurt. Probeer het eens:

#!/usr/bin/python
import smtplib
import base64

filename = "/tmp/test.txt"
# Een bestand lezen en coderen in base64-formaat
fo = open(filename, "rb")
filecontent = fo.read()
encodedcontent = base64.b64encode(filecontent)

sender = 'webmaster@tutorialpoint.com'
reciever = 'amrood.admin@gmail.com'

marker = "AUNIQUEMARKER"

body ="""
This is a test email to send an attachment.
"""

# De hoofheaders definiëren.
part1 = """From: From Person 
To: To Person 
Subject: Sending Attachment
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=%s
--%s
""" % (marker, marker)

# De berichtactie definiëren
part2 = """Content-Type: text/plain
Content-Transfer-Encoding:8bit

%s
--%s
""" % (body, marker)

# De bijlagsectie definiëren
part3 = """Content-Type: multipart/mixed; name="%s"
Content-Transfer-Encoding:base64
Content-Disposition: attachment; filename=%s

%s
--%s--
""" % (filename, filename, encodedcontent, marker)

message = part1 + part2 + part3

try:
    smtpObj = smtplib.SMTP('localhost')
    smtpObj.sendmail(sender, reciever, message)
    print "Successfully sent email"
except Exception:
    print "Error: unable to send email"

Python

  1. TMP006 Infrarood temperatuursensor met Raspberry Pi: Python bibliotheek & installatiegids
  2. Een externe temperatuursensor bouwen met Raspberry Pi en Python – Stap-voor-stap handleiding
  3. Python Datatypes onder de knie krijgen: Een praktische gids
  4. Python Operators onder de knie krijgen: Een uitgebreide gids
  5. Python Pass Statement onder de knie krijgen: Een praktische gids
  6. Python Functie-argumenten onder de knie krijgen: Positionele, Keyword en Default Parameters
  7. Python-dictionaries beheersen: aanmaken, manipuleren en geavanceerde technieken
  8. Python-exception handling: try, except, else en finally uitgelegd
  9. Gemiddeldes Berekenen in Python: Een Praktische Gids
  10. Twee Python-variabelen moeiteloos wisselen zonder tijdelijke variabele
  11. E-mails versturen in Java: Een stapsgewijze handleiding