Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> python

Python - Envío de correo electrónico mediante SMTP

Página anteriorPágina siguiente

El Protocolo simple de transferencia de correo (SMTP) es un protocolo que maneja el envío de correo electrónico y el enrutamiento de correo electrónico entre servidores de correo.

Python proporciona smtplib módulo, que define un objeto de sesión de cliente SMTP que se puede utilizar para enviar correo a cualquier máquina de Internet con un demonio de escucha SMTP o ESMTP.

Aquí hay una sintaxis simple para crear un objeto SMTP, que luego se puede usar para enviar un correo electrónico:

import smtplib

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

Aquí está el detalle de los parámetros −

Un objeto SMTP tiene un método de instancia llamado sendmail , que normalmente se usa para hacer el trabajo de enviar un mensaje. Toma tres parámetros −

Ejemplo

Aquí hay una manera simple de enviar un correo electrónico usando el script de Python. Pruébalo una vez −

#!/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"

Aquí, ha colocado un correo electrónico básico en el mensaje, usando una comilla triple, teniendo cuidado de formatear los encabezados correctamente. Un correo electrónico requiere un De , A y Asunto encabezado, separado del cuerpo del correo electrónico con una línea en blanco.

Para enviar el correo utiliza smtpObj para conectarse al servidor SMTP en la máquina local y luego usar sendmail junto con el mensaje, la dirección de origen y la dirección de destino como parámetros (aunque las direcciones de origen y destino están dentro del propio correo electrónico, no siempre se utilizan para enrutar el correo).

Si no está ejecutando un servidor SMTP en su máquina local, puede usar smtplib cliente para comunicarse con un servidor SMTP remoto. A menos que esté utilizando un servicio de correo web (como Hotmail o Yahoo! Mail), su proveedor de correo electrónico debe haberle proporcionado los detalles del servidor de correo saliente que puede proporcionarles, de la siguiente manera −

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

Enviar un correo electrónico HTML usando Python

Cuando envía un mensaje de texto usando Python, todo el contenido se trata como texto simple. Incluso si incluye etiquetas HTML en un mensaje de texto, se muestra como texto simple y las etiquetas HTML no se formatearán de acuerdo con la sintaxis HTML. Pero Python ofrece la opción de enviar un mensaje HTML como un mensaje HTML real.

Al enviar un mensaje de correo electrónico, puede especificar una versión de Mime, un tipo de contenido y un juego de caracteres para enviar un correo electrónico HTML.

Ejemplo

El siguiente es el ejemplo para enviar contenido HTML como un correo electrónico. Pruébalo una vez −

#!/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"

Envío de archivos adjuntos como correo electrónico

Para enviar un correo electrónico con contenido mixto es necesario configurar Content-type encabezado a multiparte/mixto . Luego, las secciones de texto y archivos adjuntos se pueden especificar dentro de límites .

Un límite comienza con dos guiones seguidos de un número único, que no puede aparecer en la parte del mensaje del correo electrónico. Un límite final que indica la sección final del correo electrónico también debe terminar con dos guiones.

Los archivos adjuntos deben estar codificados con el pack("m") función para tener codificación base64 antes de la transmisión.

Ejemplo

El siguiente es el ejemplo, que envía un archivo /tmp/test.txt como archivo adjunto. Pruébalo una vez −

#!/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. Programación orientada a objetos de Python
  2. Variables globales, locales y no locales de Python
  3. Sueño de Python ()
  4. Python - Programación GUI (Tkinter)
  5. Python romper y continuar
  6. Funciones Python Lambda con EJEMPLOS