Como enviar Emails de cualquier proveedor con Python

Hoy veremos cómo enviar emails de cualquier proveedor de correo en Python. Esta primera parte es para explicar cómo funcionan los servidores de los proveedores de correo electronico como Gmail, Outlook, Yahoo, etc con la finalidad de poder deducir por nosotros mismos como cambiar el código para otros proveedores. Luego veremos como ir armando el código según lo que ya entendimos.

¿Que es lo que sucede cuando enviamos un correo electrónico?

Los proveedores de correo electrónico usan servidores SMTP (Simple Mail Transfer Protocol o protocolo simple de transferencia de correo). Estos servidores actúan como una empresa de mensajería ya que primero nosotros le dejamos nuestro mensaje con información suficiente para que llegue a el o los destinatarios. Cuando este recibe nuestro mensaje se informa de quien o quienes son los destinatarios y se encarga de hacerles llegar nuestro mensaje enviando nuestro mensaje a otros servidores hasta llegar al o los destinatarios. Si no se pudo enviar nuestro mensaje por problemas de "logística" nos lo hará saber. Cabe resaltar que un servidor con el protocolo SMTP solo se informa del remitente y los destinatarios pero NO tiene información sobre el contenido del mensaje .



¿De que forma nos conectamos a un servidor SMTP?

Para conectarnos a un servidor SMTP es necesario saber su dirección y el puerto. Aqui dejo una tabla de las direcciones y de los servidores SMTP de cada proveedor de correo electrónico. Para conectarnos a estos servidores lo haremos mediante TLS para establecer una conexión segura.

Proveedor Dirección Puerto
Gmail smtp.gmail.com 587
Outlook smtp.live.com 587
CorpMail mail.planisys.net 587

Dependiendo del proveedor que queramos usar tenemos que tener una cuanta en ese proveedor porque necesitaremos autenticarnos cuando queramos establecer una conexión con el servidor.

Ahora, sabiendo cómo es el procedimiento del envió de un email y cómo conectarnos a un servidor SMTP podemos armar un script en Python.

Armando el script en Python

Lo primero que tenemos que hacer es nuestra "carta" la cual se la dejaremos a la empresa de mensajería. Para esto es necesario importar la libreria smtplib como se muestra a continuación.

import smtplib
from email.mime.multipart import MIMEMultipart 
from email.mime.text import MIMEText

msg = MIMEMultipart()  #Creamos un objeto mensaje
msg['From'] = "nuestrocooreo" # Aqui escribimos el correo de donde queremos enviar el mensaje
msg['To'] = "destinatario@dominio.com"  # Asignamos el destinatario a nuestro mensaje ejem:(pedro@gmail.com)
msg['Subject'] = "Probando Emailer"  # Asignamos el asunto a nuestro mensaje


message = "Hola, esto es una prueba"  # Escribimos el cuerpo del mensaje
msg.attach(MIMEText(message,'plain')) # Adjuntamos el cuerpo a nuestro objeto mensaje



Ahora nuestra "carta" ya está lista para ser enviada, falta dejarla en la empresa de mensajería, para eso le decimos quienes somos mostrando nuestra identificación luego ellos verifican que nuestros datos son correctos y proceden con el envío de la carta. Lo cual es análogo a establecer una conexión con el servidor, loguearnos con nuestra cuenta, darle la instrucción de enviar nuestro email y finalmente desconectarse del servidor.

Outlook

Si nuestro proveedor es Outlook (se asume que tenemos una cuenta en Outlook), entonces vamos a la tabla y vemos que la dirección de su servidor SMTP es "smtp.live.com" y el puerto es el 587.


server = smtplib.SMTP('smtp.live.com', '587') # Identificamos al servidor
server.starttls() # Establecemos una conexión segura mediante TLS
server.login(email , password) """ cambiamos el valor de "email" por nuestro correo
                                   y "password" por la contraseña de nuestra cuenta   """
server.sendmail(msg['From'], msg['To'], msg.as_string())
server.quit()


CorpMail

Si nuestro proveedor es CorpMail(se asume que tenemos una cuenta en CorpMail), entonces vamos a la tabla y vemos que la dirección de su servidor SMTP es "mail.planisys.net" y el puerto es el 587. Solo bastaría con cambiar la dirección del servidor y el resto del código seguiría siendo igual.

server = smtplib.SMTP('smtp.gmail.com', '587') # Identificamos al servidor
server.starttls() # Establecemos una conexión segura mediante TLS
server.login(email , password) """ cambiamos el valor de "email" por nuestro correo
                                   y "password" por la contraseña de nuestra cuenta   """
server.sendmail(msg['From'], msg['To'], msg.as_string())
server.quit()

Gmail

Para el caso de Gmail primero se tiene que cambiar una configuración de seguridad en nuestra cuenta. Para eso vayamos a la configuración de seguridad de nuestra cuenta y luego nos dirigimos en la parte que dice "Acceso de aplicaciones poco seguras" y hacemos click en "Activar acceso".



Listo, una vez que hayamos activado el acceso ya podremos enviar correos de nuestra cuneta de Gmail. El codigo sería el siguiente:

server = smtplib.SMTP('smtp.gmail.com', '587') # Identificamos al servidor
server.starttls() # Establecemos una conexión segura mediante TLS
server.login(email , password) """ cambiamos el valor de "email" por nuestro correo
                                   y "password" por la contraseña de nuestra cuenta   """
server.sendmail(msg['From'], msg['To'], msg.as_string())
server.quit()





Comentarios

Entradas populares de este blog

Empezar a programar con Python