Gmail con python 3
En este tutorial veremos como enviar correos electrónicos con gmail utilizando como lenguaje de programación python 3. Haremos uso de la librería smtplib y de librería email.
Lo primero que haremos sera importar las librerías nombradas anteriormente. Cabe destacar que de la librería email utilizaremos solo una sección de la misma.
import smtplib from email.mime.text import MIMEText
La primer librería será utilizada para realizar la conexión con el servidor de gmail por medio del protocolo smtp.
import smtplib
La segunda librería será utilizada para la composición del correo electrónico a enviar.
from email.mime.text import MIMEText
Lo siguiente que haremos sera realizar una conexión con el servidor para después poder hacer el login con nuestra cuenta de gmail.
mailServer = smtplib.SMTP('smtp.gmail.com', 587)
El siguiente paso a realizar es encriptar el correo a enviar con el siguiente código.
mailServer.starttls()
Una vez hecho lo anterior vamos a decirle al servidor de gmail que permita extensiones ESMTP. Esta extensión nos permite utilizar un smtp mejorado es decir con mas funciones, entre otras cosas encriptar los correos enviados que es lo que estamos realizando nosotros. Esto lo haremos con la siguiente linea de código.
mailServer.ehlo()
Ahora si, vamos a ingresar a nuestra cuenta de gmail con la siguiente linea de código.
mailServer.login("tu_correo_de_gmail_@gmail.com", "tu_contraseña_del_correo")
Pues ustedes me dirán que este archivo contiene la contraseña y eso puede causar que te la roben, si , puede pasar pero claro solo si alguien tiene acceso a tu computadora. Igualmente les tengo una segunda opción. Es utilizar la librería getpass. Con esta librería haremos que cada vez que iniciemos sesión en gmail por medio de este programa nos pida la contraseña. De esta manera la contraseña de su cuenta de gmail sera puramente secreta. Todo esto mencionado lo haremos importando en la sección de importación de librerías de nuestro código la librería getpass.
import getpass
Lo próximo a realizar es remplazar el segundo parámetro de la función login() por la función getpass() de la librería getpass.
mailServer.login("tu_correo_de_gmail_@gmail.com", getpass.getpass())
Esto hará que cada vez que se ingrese sesión con este programa se solicite la contraseña.
Lo siguiente que debemos hacer es generar el contenido del mensaje para ello utilizaremos la función MIMEText() de la librería email. Esta función es para crear objetos MIME de tipo texto.
mensaje = MIMEText("Este es un mensaje de prueba enviado desde python")
Luego de haber seteado el mensaje a enviar vamos a indicarle el correo que enviá el mensaje así como el que lo recibe.
Para configurar el correo que lo enviá usaremos la siguiente linea de código.
mensaje['From'] = "tu_correo_de_gmail_@gmail.com"
Y para configurar el que lo recibe hay que usar la siguiente linea de código.
mensaje['To'] = "correo_receptor_@gmail.com"
Una vez hecho esto vamos a ponerle un titulo a este correo y esto lo haremos de la siguiente manera.
mensaje['Subject'] = "Titulo del mensaje"
Una vez hecho todo esto vamos a enviar el mensaje mediante la función sendmail() de smtplib. Esto se realiza de la siguiente manera.
mailServer.sendmail(mensaje['From'], mensaje['To'], mensaje.as_string())
Si han llegado hasta este punto del tutorial, felicitaciones. Ustedes ya pueden enviar correos electrónicos automáticamente con este programa en python 3. Si tienes alguna duda no dudes en dejármela en los comentarios.
Código Completo:
import smtplib from email.mime.text import MIMEText import getpass mailServer = smtplib.SMTP('smtp.gmail.com', 587) mailServer.starttls() mailServer.ehlo() #Opcion 1: #mailServer.login("tu_correo_de_gmail_@gmail.com", "tu_contraseña_del_correo") #Opcion 2: mailServer.login("tu_correo_de_gmail_@gmail.com", getpass.getpass()) mensaje = MIMEText("Este es un mensaje de prueba enviado desde python") mensaje['From'] = "tu_correo_de_gmail_@gmail.com" mensaje['To'] = "correo_receptor_@gmail.com" mensaje['Subject'] = "Titulo del mensaje" mailServer.sendmail(mensaje['From'], mensaje['To'], mensaje.as_string())
Saludos MRX_
- Tutorial
- Ideas / Inventos | Programación | Programas, aplicaciones | Otros
Se me ocurre, asi a modo de consejo simple de que puedes pasar los argumentos al método login() mediante la función input(), así el usuario escribe manualmente las credenciales, sin guardar nada de forma textual en el código :3
Digo, así evitamos el problema de dejar datos visibles en el código jsjsjs
Saludos!!! Buenos tutoriales papu =D
Si eso es un aspecto a tener en cuenta sin embargo la idea es automatizar al máximo el envio del correo de esta manera se podría usar en un juego o en una pagina entre otras posibles aplicaciónes. Por ejemplo: Cuando un usuario se registra le envia un mensaje de Bienvenida al correo. Gracias por comentar
Siii, también va por ahí el tema :3
Lo otro que se me ocurre, es que puedas guardar los datos de login en un JSON ? entonces así el código puede acceder a los datos, sin la necesidad de volver a ingresarlos manualmente