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

Python - E-mail verzenden met SMTP

Vorige paginaVolgende pagina

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

Python biedt smtplib module, die een SMTP-clientsessieobject definieert dat kan worden gebruikt om e-mail te verzenden naar elke internetmachine met een SMTP- of ESMTP-listenerdaemon.

Hier is een eenvoudige syntaxis om één SMTP-object te maken, dat later kan worden gebruikt om een ​​e-mail te verzenden −

import smtplib

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

Hier is het detail van de parameters −

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

  • poort − Als u host aanlevert argument, dan moet je een poort specificeren waar de SMTP-server naar luistert. Gewoonlijk is deze poort 25.

  • lokale_hostnaam − Als uw SMTP-server op uw lokale computer draait, kunt u alleen localhost opgeven vanaf deze optie.

Een SMTP-object heeft een instantiemethode genaamd sendmail , die meestal wordt gebruikt om het werk van het verzenden van een bericht te doen. Er zijn drie parameters nodig −

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

  • De ontvangers − Een lijst met strings, één voor elke ontvanger.

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

Voorbeeld

Hier is een eenvoudige manier om één e-mail te verzenden met behulp van het Python-script. Probeer het een keer −

#!/usr/bin/python

import smtplib

sender = '[email protected]'
receivers = ['[email protected]']

message = """From: From Person <[email protected]>
To: To Person <[email protected]>
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 heb je een standaard e-mail in het bericht geplaatst, met behulp van een driedubbele aanhalingstekens, waarbij je ervoor zorgt dat de koppen correct zijn opgemaakt. Een e-mail vereist een Van , Naar , en Onderwerp header, gescheiden van de hoofdtekst van de e-mail met een lege regel.

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

Als u geen SMTP-server op uw lokale computer gebruikt, kunt u smtplib gebruiken client om te communiceren met een externe SMTP-server. Tenzij u een webmailservice gebruikt (zoals Hotmail of Yahoo! Mail), moet uw e-mailprovider u de gegevens van de server voor uitgaande e-mail hebben verstrekt die u deze als volgt kunt verstrekken −

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

Een HTML-e-mail verzenden met Python

Wanneer u een sms-bericht verzendt met Python, wordt alle inhoud behandeld als eenvoudige tekst. Zelfs als u HTML-tags in een tekstbericht opneemt, wordt het weergegeven als eenvoudige tekst en worden HTML-tags niet opgemaakt volgens de HTML-syntaxis. Maar Python biedt de mogelijkheid om een ​​HTML-bericht als een echt HTML-bericht te verzenden.

Tijdens het verzenden van een e-mailbericht kunt u een Mime-versie, inhoudstype en tekenset opgeven om een ​​HTML-e-mail te verzenden.

Voorbeeld

Hieronder volgt het voorbeeld om HTML-inhoud als e-mail te verzenden. Probeer het een keer −

#!/usr/bin/python

import smtplib

message = """From: From Person <[email protected]>
To: To Person <[email protected]>
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"

Bijlagen als e-mail verzenden

Om een ​​e-mail met gemengde inhoud te verzenden, moet u Content-type . instellen koptekst naar multipart/mixed . Vervolgens kunnen tekst- en bijlagesecties worden opgegeven binnen grenzen .

Een grens wordt gestart met twee koppeltekens gevolgd door een uniek nummer, dat niet in het berichtgedeelte van de e-mail kan verschijnen. Een laatste grens die het laatste gedeelte van de e-mail aangeeft, moet ook eindigen met twee koppeltekens.

Bijgevoegde bestanden moeten worden gecodeerd met de pack("m") functie om base64-codering te hebben vóór verzending.

Voorbeeld

Hieronder volgt het voorbeeld dat een bestand /tmp/test.txt . verzendt als een bijlage. Probeer het een keer −

#!/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 = '[email protected]'
reciever = '[email protected]'

marker = "AUNIQUEMARKER"

body ="""
This is a test email to send an attachement.
"""
# Define the main headers.
part1 = """From: From Person <[email protected]>
To: To Person <[email protected]>
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-gegevenstypen
  2. Python-operators
  3. Python pass-instructie
  4. Python-functieargumenten
  5. Python-woordenboek
  6. Afhandeling van Python-uitzonderingen met behulp van de instructie try, behalve en tenslotte
  7. TMP006 Temperature Sensor Python Library met Raspberry pi,
  8. Python- en Raspberry Pi-temperatuursensor
  9. Python-gemiddelde:hoe het GEMIDDELDE van een lijst in Python te vinden?
  10. Verwissel twee Python-variabelen zonder een derde te gebruiken
  11. Java - E-mail verzenden