Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> Python

Python - Senden von E-Mails mit SMTP

Vorherige SeiteNächste Seite

Simple Mail Transfer Protocol (SMTP) ist ein Protokoll, das das Senden von E-Mails und das Weiterleiten von E-Mails zwischen Mailservern handhabt.

Python bietet smtplib Modul, das ein SMTP-Client-Sitzungsobjekt definiert, das verwendet werden kann, um E-Mails an jeden Internet-Rechner mit einem SMTP- oder ESMTP-Listener-Daemon zu senden.

Hier ist eine einfache Syntax, um ein SMTP-Objekt zu erstellen, das später zum Senden einer E-Mail verwendet werden kann −

import smtplib

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

Hier ist das Detail der Parameter −

Ein SMTP-Objekt hat eine Instanzmethode namens sendmail , das normalerweise zum Versenden einer Nachricht verwendet wird. Es benötigt drei Parameter −

Beispiel

Hier ist eine einfache Möglichkeit, eine E-Mail mit einem Python-Skript zu senden. Probieren Sie es einmal aus −

#!/usr/bin/python

import smtplib

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

message = """From: From Person <from@fromdomain.com>
To: To Person <to@todomain.com>
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 haben Sie eine einfache E-Mail mit dreifachen Anführungszeichen in eine Nachricht eingefügt und dabei darauf geachtet, die Kopfzeilen korrekt zu formatieren. Eine E-Mail erfordert einen Von , An , und Betreff Header, durch eine Leerzeile vom E-Mail-Text getrennt.

Um die Mail zu versenden, verwenden Sie smtpObj um sich mit dem SMTP-Server auf dem lokalen Rechner zu verbinden und dann sendmail zu verwenden -Methode zusammen mit der Nachricht, der Absenderadresse und der Zieladresse als Parameter (obwohl die Absender- und Empfängeradressen in der E-Mail selbst enthalten sind, werden diese nicht immer zum Weiterleiten von E-Mails verwendet).

Wenn Sie auf Ihrem lokalen Rechner keinen SMTP-Server betreiben, können Sie smtplib verwenden Client, um mit einem entfernten SMTP-Server zu kommunizieren. Sofern Sie keinen Webmail-Dienst (wie Hotmail oder Yahoo! Mail) verwenden, muss Ihr E-Mail-Anbieter Ihnen die Serverdetails für ausgehende E-Mails bereitgestellt haben, die Sie ihm wie folgt zur Verfügung stellen können −

smtplib.SMTP('mail.your-domain.com', 25)

Versenden einer HTML-E-Mail mit Python

Wenn Sie eine Textnachricht mit Python senden, wird der gesamte Inhalt als einfacher Text behandelt. Auch wenn Sie HTML-Tags in eine Textnachricht einfügen, wird diese als einfacher Text angezeigt und HTML-Tags werden nicht gemäß der HTML-Syntax formatiert. Aber Python bietet die Möglichkeit, eine HTML-Nachricht als eigentliche HTML-Nachricht zu senden.

Beim Senden einer E-Mail-Nachricht können Sie eine Mime-Version, einen Inhaltstyp und einen Zeichensatz angeben, um eine HTML-E-Mail zu senden.

Beispiel

Im Folgenden sehen Sie ein Beispiel zum Versenden von HTML-Inhalten als E-Mail. Probieren Sie es einmal aus −

#!/usr/bin/python

import smtplib

message = """From: From Person <from@fromdomain.com>
To: To Person <to@todomain.com>
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

<b>This is HTML message.</b>
<h1>This is headline.</h1>
"""

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

Anhänge als E-Mail versenden

Um eine E-Mail mit gemischtem Inhalt zu versenden, muss Inhaltstyp eingestellt werden Header zu multipart/mixed . Dann können Text- und Anhangsabschnitte innerhalb von Grenzen angegeben werden .

Eine Grenze beginnt mit zwei Bindestrichen, gefolgt von einer eindeutigen Nummer, die nicht im Nachrichtenteil der E-Mail erscheinen darf. Eine abschließende Grenze, die den letzten Abschnitt der E-Mail kennzeichnet, muss ebenfalls mit zwei Bindestrichen enden.

Angehängte Dateien sollten mit pack("m") codiert werden Funktion, um vor der Übertragung base64-Codierung zu haben.

Beispiel

Es folgt das Beispiel, das eine Datei /tmp/test.txt sendet als Anhang. Probieren Sie es einmal aus −

#!/usr/bin/python

import smtplib
import base64

filename = "/tmp/test.txt"

# Read a file and encode it into base64 format
fo = open(filename, "rb")
filecontent = fo.read()
encodedcontent = base64.b64encode(filecontent)  # base64

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

marker = "AUNIQUEMARKER"

body ="""
This is a test email to send an attachement.
"""
# Define the main headers.
part1 = """From: From Person <me@fromdomain.net>
To: To Person <amrood.admin@gmail.com>
Subject: Sending Attachement
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=%s
--%s
""" % (marker, marker)

# Define the message action
part2 = """Content-Type: text/plain
Content-Transfer-Encoding:8bit

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

# Define the attachment section
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. Python-XML-Parser-Tutorial:Beispiel für XML-Datei lesen (Minidom, ElementTree)
  2. Python @property decorator
  3. Python-ZIP-Datei mit Beispiel
  4. Verwenden von IPython
  5. Python-Dekorateure
  6. Python - Netzwerkprogrammierung