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 anterior Pá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:

 importar smtplibsmtpObj =smtplib.SMTP ([host [, puerto [, local_hostname]]]) 

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

Un objeto SMTP tiene un método de instancia llamado sendmail , que normalmente se utiliza para enviar un mensaje por correo. Se necesitan tres parámetros:

Ejemplo

A continuación, se muestra una forma sencilla de enviar un correo electrónico mediante el script Python. Pruébelo una vez -

 #! / usr / bin / pythonimport smtplibsender ='from@fromdomain.com'receivers =['to@todomain.com'] message ="" "From:From Person  Para:Para Persona  Asunto:Prueba de correo electrónico SMTP Este es un mensaje de correo electrónico de prueba. "" "Prueba:smtpObj =smtplib.SMTP ('localhost') smtpObj.sendmail (remitente, receptores, mensaje) imprimir "Correo electrónico enviado correctamente" excepto SMTPException:imprimir "Error:no se puede enviar correo electrónico" 

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

Para enviar el correo, usa smtpObj para conectarse al servidor SMTP en la máquina local y luego use el sendmail junto con el mensaje, la dirección de remitente y la dirección de destino como parámetros (aunque las direcciones de remitente y destino están dentro del 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 para que pueda proporcionarlos, 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, el tipo de contenido y el juego de caracteres para enviar un correo electrónico HTML.

Ejemplo

A continuación se muestra el ejemplo para enviar contenido HTML como correo electrónico. Pruébelo una vez -

 #! / usr / bin / pythonimport smtplibmessage ="" "From:From Person  To:To Person  MIME-Version:1.0Content -tipo:texto / html Asunto:Prueba de correo electrónico SMTP HTML Este es un mensaje de correo electrónico que se enviará en formato HTML  Este es un mensaje HTML.  

Este es un título.

"" "intente:smtpObj =smtplib.SMTP ('localhost') smtpObj.sendmail (remitente, receptores, mensaje) imprimir" Correo electrónico enviado correctamente "excepto SMTPException:imprimir" Error:no se puede enviar correo electrónico "

Envío de archivos adjuntos como correo electrónico

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

Un límite se inicia 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 indique la sección final del correo electrónico también debe terminar con dos guiones.

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

Ejemplo

A continuación se muestra el ejemplo, que envía un archivo /tmp/test.txt como un archivo adjunto. Pruébelo una vez -

 #! / usr / bin / pythonimport smtplibimport base64filename ="/tmp/test.txt"# Leer un archivo y codificarlo en base64 formatfo =open (filename," rb ") filecontent =fo .read () encodedcontent =base64.b64encode (filecontent) # base64sender ='webmaster@tutorialpoint.com'reciever ='amrood.admin@gmail.com'marker ="AUNIQUEMARKER" body ="" "Este es un correo electrónico de prueba para enviar un archivo adjunto. "" "# Defina los encabezados principales.part1 =" "" De:De la persona  Para:A la persona  Asunto:Enviando archivo adjunto Versión MIME:1.0Content -Tipo:multiparte / mixto; límite =% s -% s "" "% (marcador, marcador) # Definir el mensaje actionpart2 =" "" Content-Type:text / plainContent-Transfer-Encoding:8bit% s-- % s "" "% (cuerpo, marcador) # Definir el archivo adjunto sectionpart3 =" "" Content-Type:multipart / mixed; name =\ "% s \" Content-Transfer-Encoding:base64Content-Disposition:adjunto; filename =% s% s -% s-- "" "% (nombre de archivo, nombre de archivo, contenido codificado, marcador) mensaje =part1 + part2 + part3t ry:smtpObj =smtplib.SMTP ('localhost') smtpObj.sendmail (remitente, destinatario, mensaje) imprimir "Correo electrónico enviado correctamente" excepto Excepción:imprimir "Error:no se puede enviar correo electrónico" 

python

  1. Python - Números
  2. Operadores de Python
  3. Conversión y conversión de tipos de Python
  4. Recuento de lista de Python () con EJEMPLOS
  5. Python Renombrar archivo y directorio usando os.rename ()
  6. Índice de lista de Python () con el ejemplo