Enviando correos electrónicos en Python con SMTP

Este tutorial le dará una introducción a SMTP, un módulo de Python utilizado para enviar correo. También demostrará cómo enviar diferentes tipos de correo electrónico, como correos electrónicos de texto simple, correos electrónicos con adjuntos y correos electrónicos con contenido HTML.

Introducción a SMTP

El Protocolo simple de transferencia de correo (SMTP) maneja el envío y enrutamiento del correo electrónico entre los servidores de correo.

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

Aquí es cómo crear un objeto SMTP.

importar smtplib server = smtplib.SMTP (host = 'host_address', port = your_port)

Crear y enviar un correo electrónico simple

La siguiente secuencia de comandos le permitirá enviar un correo electrónico a través del servidor SMTP de Gmail. Sin embargo, Google no permitirá el inicio de sesión a través de smtplib porque ha marcado este tipo de inicio de sesión como "menos seguro". Para resolver esto, vaya a https://www.google.com/settings/security/lesssecureapps mientras está conectado a su cuenta de Google y "Permitir aplicaciones menos seguras". Ver captura de pantalla abajo.

Seguiremos los siguientes pasos para llevar a cabo este proceso:

  • Crear un objeto SMTP para la conexión al servidor..
  • Ingrese a su cuenta.
  • Defina los encabezados de sus mensajes y las credenciales de inicio de sesión..
  • Crear un MIMEMultipart mensaje objeto y adjunte los encabezados relevantes a él, es decir, De, Para y Asunto.
  • Adjunte el mensaje al mensaje. MIMEMultipart objeto.
  • Finalmente, envía el mensaje..

Este proceso es tan simple como se muestra a continuación..

# importar los paquetes necesarios desde email.mime.multipart importar MIMEMultipart desde email.mime.text importar MIMEText importar smtplib # crear mensaje objeto instancia msg = MIMEMultipart () mensaje = "Gracias" # configurar los parámetros del mensaje contraseña = "su_punta_usuario" msg ['From'] = "your_address" msg ['To'] = "to_address" msg ['Subject'] = "Subscription" # agregue en el cuerpo del mensaje msg.attach (MIMEText (mensaje, 'plain')) # create server server = smtplib.SMTP ('smtp.gmail.com: 587') server.starttls () # Credenciales de inicio de sesión para enviar el servidor server.login (msg ['From'], password) # envíe el mensaje a través del servidor . server.sendmail (msg ['From'], msg ['To'], msg.as_string ()) server.quit () imprime "correo electrónico enviado con éxito a% s:"% (msg ['To']) 

Tenga en cuenta que las direcciones 'Hasta' y 'Desde' deben incluirse en los encabezados de los mensajes explícitamente.

Crear y enviar un correo electrónico con un archivo adjunto

En este ejemplo, vamos a enviar un correo electrónico con un archivo adjunto de imagen. El proceso es similar al envío de un correo electrónico de texto plano..

  • Crear un objeto SMTP para la conexión al servidor..
  • Ingrese a su cuenta.
  • Defina los encabezados de sus mensajes y las credenciales de inicio de sesión..
  • Crear un MIMEMultipart mensaje objeto y adjunte los encabezados relevantes a él, es decir, De, Para y Asunto.
  • Lee y adjunta la imagen al mensaje. MIMEMultipart objeto.
  • Finalmente, envía el mensaje..
# send_attachment.py # importar los paquetes necesarios desde email.mime.multipart importar MIMEMultipart desde email.MIMEImage importar MIMEImage desde email.mime.text importar MIMEText importar smtplib # crear mensaje objeto instancia msg = MIMEMultipart () # configurar los parámetros de la contraseña del mensaje = "your_password" msg ['From'] = "your_address" msg ['To'] = "to_address" msg ['Subject'] = "Photos" # adjuntar imagen al cuerpo del mensaje msg.attach (MIMEImage (archivo ("google .jpg "). read ())) # create server server = smtplib.SMTP ('smtp.gmail.com: 587') server.starttls () # Credenciales de inicio de sesión para enviar el servidor server.login (msg ['From' ], contraseña) # enviar el mensaje a través del servidor. server.sendmail (msg ['From'], msg ['To'], msg.as_string ()) server.quit () imprime "correo electrónico enviado con éxito a% s:"% (msg ['To']) 

los MIMEImage clase es una subclase de MIMENonMultipart que se utiliza para crear objetos de mensaje MIME de tipos de imagen.Otras clases disponibles incluyen
MIMEMessage y MIMEAudio.

Crear y enviar correos electrónicos HTML

Lo primero que vamos a hacer es crear una plantilla de correo electrónico HTML..

Crear una plantilla HTML

Aquí está el código HTML para la plantilla, y contiene dos columnas de la tabla, cada una con una imagen y un contenido de vista previa. Si prefiere una solución profesional, ya preparada, obtenga nuestras mejores plantillas de correo electrónico. Tenemos una serie de opciones de respuesta con funciones fáciles de personalizar para comenzar.

  Boletín electrónico de Tutsplus    

Ver en el navegador

Evanto Limited

Noviembre 2017

Cómo levantarse y correr con Vue

En la publicación introductoria de esta serie, hablamos un poco sobre cómo los diseñadores web pueden beneficiarse utilizando Vue. En este tutorial, aprenderemos cómo mejorar Vue ...

Presentando Haiku: Diseñar y crear movimiento

Con el movimiento en aumento entre los desarrolladores web, también lo son las herramientas que ayudan a optimizar su creación. Haiku es un independiente ...

Diseña mejores experiencias para web y móvil.

Darse de baja | Tweet | Ver en el navegador

La plantilla finalmente se verá así cuando esté completa:

A continuación se muestra el script para enviar un correo electrónico con contenido HTML. El contenido de la plantilla será nuestro mensaje de correo electrónico..

import smtplib import email.message server = smtplib.SMTP ('smtp.gmail.com:587') email_content = "" "    Boletín electrónico de Tutsplus    

Ver en el navegador

Evanto Limited

Noviembre 2017

Cómo levantarse y correr con Vue

En la publicación introductoria de esta serie, hablamos un poco sobre cómo los diseñadores web pueden beneficiarse utilizando Vue. En este tutorial aprenderemos cómo mejorar Vue ...

Presentando Haiku: Diseñar y crear movimiento

Con el movimiento en aumento entre los desarrolladores web, también lo son las herramientas que ayudan a optimizar su creación. Haiku es un independiente ...

Diseña mejores experiencias para web y móvil.

Darse de baja | Tweet | Ver en el navegador

"" "msg = email.message.Message () msg ​​['Subject'] = 'Tutsplus Newsletter' msg ['From'] = 'youraddress' msg ['To'] = 'to_address' password =" yourpassword "msg. add_header ('Content-Type', 'text / html') msg.set_payload (email_content) s = smtplib.SMTP ('smtp.gmail.com: 587') s.starttls () # Credenciales de inicio de sesión para enviar el correo electrónico. inicio de sesión (msg ['From'], contraseña) s.sendmail (msg ['From'], [msg ['To']], msg.as_string ())

Ejecute su código y, si no se produce ningún error, el correo electrónico se realizó correctamente. Ahora ve a tu bandeja de entrada y deberías ver tu correo electrónico como contenido HTML bien formateado.

Conclusión

Este tutorial ha cubierto la mayor parte de lo que se necesita para enviar correos electrónicos para su aplicación. Hay varias API disponibles para enviar correos electrónicos, por lo que no tiene que empezar desde cero, por ejemplo. SendGrid, pero también es importante entender los conceptos básicos. Para más información, visite la documentación de Python..

Además, no dude en ver lo que tenemos disponible para la venta y para el estudio en Envato Market, y haga cualquier pregunta y proporcione sus valiosos comentarios utilizando el siguiente feed..