Aprendamos cómo enviar correos electrónicos en Python usando SMTP (Protocolo simple de transferencia de correo) a través del cliente de correo electrónico de Gmail y Outlook con configuración completa para el servidor SMTP.

 ¿Qué es el Servidor Python SMTP?El acrónimo SMTP significa Protocolo simple de transferencia de correo. Este protocolo ayuda a transferir correos de una aplicación a otra usando servidores IMAP / POP. Encuentre más acerca de cómo SMTP funciona aquí.Las aplicaciones de Python (clientes) pueden usar las bibliotecas del servidor SMTP de Python para enviar correos electrónicos desde una aplicación cliente usando Gmail, Outlook y otros servicios de correo electrónico.Demostraremos cómo enviar correos electrónicos usando Python a través de los servicios de Gmail y Outlook. Sin embargo, es mucho más fácil enviar correos electrónicos en Python utilizando el servicio de Outlook en comparación con Gmail, ya que las configuraciones son más fáciles. Por lo tanto, le sugeriremos que use el cliente de correo electrónico de Outlook.Para enviar un correo electrónico, Python proporciona el módulo smtplib. El módulo smtplib es un cliente de protocolo SMTP. Básicamente define un objeto de sesión de cliente SMTP que se puede utilizar para enviar correos electrónicos con un daemon de escucha SMTP o ESMTP.Veamos la sintaxis para crear un objeto SMTP en Python scripting. Usaremos el mismo objeto Python smtplib para enviar correos electrónicos en Python usando el servidor SMTP.

import smtplib
smtpObj = smtplib.SMTP([host_name[, port_number[, local_host_name[, timeout]]]])



Es importante definir los dos objetos siguientes al enviar correos electrónicos en Python. Echemos un vistazo a cada uno de ellos.

Nombre de host: un nombre de host es una etiqueta que se asigna a una máquina conectada a Internet. El nombre de host puede tomar la dirección IP o el nombre de dominio del sistema de destino. Tenemos dos hosts populares para enviar correos electrónicos en Python a través del servidor SMTP mencionado a continuación.
Imagen relacionada
smtp.gmail.com 
smtp-mail.outlook.com 

Número de puerto: un número de puerto es un método para identificar un proceso específico al que se enviará un mensaje de Internet u otro mensaje de red cuando llegue a un servidor. Generalmente utilizamos el número de puerto 587 para enviar correos electrónicos.



Pasos para configurar el servidor SMTP de GooglePaso 1: habilite la función de aplicaciones menos seguras en su cuenta de GooglePaso 2: configurar la configuración de IMAP
  •     Ir a Configuración en su cuenta de Gmail.
  •     Haga clic en la pestaña Reenvío y POP / IMAP.
  •     Habilite IMAP en la sección "Acceso IMAP" y guarde la configuración.

Paso 3: configurar el código de cliente de Python

  •     Nombre del servidor: smtp.gmail.com
  •     Puerto: 587
  •     Método de cifrado: STARTTLS

Pasos para configurar el servidor SMTP de OutlookPaso 1: configuración de POP e IMAP

  •     Vaya a la configuración de seguridad en la aplicación de Outlook. Asegúrese de que las Opciones POP estén marcadas con SÍ.
  •     Una vez que haya terminado con la habilitación de las configuraciones de POP e IMAP, debe usar el siguiente servidor SMTP mencionado y el número de puerto en su código de Python para enviar correos electrónicos.
Paso 2: configurar el código de cliente de Python
  •     Nombre del servidor: smtp-mail.outlook.com
  •     Puerto: 587
  •     Método de cifrado: STARTTLS

Nota: Este script python está escrito usando Python IDLE en el sistema operativo Microsoft Windows y la versión es Python 3.6.


Método 1: Enviar correo electrónico en Python con el servicio de Outlook


import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders

sender_email_address = 'SENDER EMAIL ADDRESS'
sender_email_password = 'SENDER EMAIL PASSWORD'
receiver_email_address = 'RECEIVER EMAIL ADDRESS'

email_subject_line = 'Sample Python Email'

msg = MIMEMultipart()
msg['From'] = sender_email_address
msg['To'] = receiver_email_address
msg['Subject'] = email_subject_line

email_body = 'Hello World. This is a Python Email using SMTP server with Outlook service.'
msg.attach(MIMEText(email_body, 'plain'))

email_content = msg.as_string()
server = smtplib.SMTP('smtp-mail.outlook.com:587')
server.starttls()
server.login(sender_email_address, sender_email_password)

server.sendmail(sender_email_address, receiver_email_address, email_content)
server.quit()

Método 2: Enviar correo electrónico en Python con datos adjuntos mediante el servicio de Outlook.

Aquí, escribimos el archivo adjunto en formato de texto y lo colocamos en la unidad C donde está instalado Python. 





import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders

sender_email_address = 'SENDER EMAIL ADDRESS'
sender_email_password = 'SENDER EMAIL PASSWORD'
receiver_email_address = 'RECEIVER EMAIL ADDRESS'

email_subject_line = 'subject'

msg = MIMEMultipart()
msg['From'] = sender_email_address
msg['To'] = receiver_email_address
msg['Subject'] = email_subject_line

email_body = 'Hello World. This is Python email sender application with Attachments.'
msg.attach(MIMEText(email_body, 'plain'))

filename = 'sample_file.txt'
attachment_file = open('sample_file.txt', 'rb')
part = MIMEBase('application', 'octet-stream')
part.set_payload((attachment_file).read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', "attachment_file; filename = "+filename)

msg.attach(part)

email_body_content = msg.as_string()
server = smtplib.SMTP('smtp-mail.outlook.com:587')
server.starttls()
server.login(sender_email_address, sender_email_password)
server.sendmail(sender_email_address, receiver_email_address, email_body_content)
server.quit()


Método 3: Enviar correo electrónico en Python usando el servicio de Gmail
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders

sender_email_address = 'SENDER EMAIL ADDRESS'
sender_email_password = 'SENDER EMAIL PASSWORD'
receiver_email_address = 'RECEIVER EMAIL ADDRESS'

email_subject_line = 'Sample Python Email'

msg = MIMEMultipart()
msg['From'] = sender_email_address
msg['To'] = receiver_email_address
msg['Subject'] = email_subject_line

email_body = 'Hello World.\nThis is a Python script to send emails using Gmail service.\n'
msg.attach(MIMEText(email_body, 'plain'))

email_content = msg.as_string()
server = smtplib.SMTP('smtp.gmail.com:587')
server.starttls()
server.login(sender_email_address, sender_email_password)

server.sendmail(sender_email_address, receiver_email_address, email_content)
server.quit()