Manejo de correos con el módulo EZGmail en Python

EZGmail es un módulo de Python que se puede usar para enviar y recibir correos electrónicos a través de Gmail. Funciona sobre la API oficial de Gmail. Aunque EZGmail no cubre todo lo que se puede hacer con la API de Gmail, hace que las tareas comunes sean muy simples, las cuales son mucho más complicadas con la propia API de Google. En este artículo, veremos cómo usar este módulo para enviar, buscar, leer correos electrónicos y descargar archivos adjuntos.

Instalación

Este módulo no viene preinstalado con Python. Para instalarlo, escriba el siguiente comando en la terminal.

pip install EZGmail

Habilitación de la API de Gmail

Primero, debemos habilitar la API de Gmail desde el sitio web oficial. Vaya al sitio web oficial para desarrolladores de Google   https://developers.google.com/gmail/api/quickstart/python y siga los pasos a continuación.

  • Haga clic en el botón Habilitar la API de Gmail .

  • Seleccione la aplicación de escritorio como cliente de OAuth.

  • A continuación, haga clic en el botón Descargar configuración del cliente .

  • Se descargará un archivo json llamado credentials.json . Copie este archivo en el directorio de trabajo de Python.

Autenticación de la aplicación

A continuación, debemos autorizar nuestro programa para usar nuestra cuenta de Google. Este proceso de autorización debe realizarse una sola vez.

  • Ejecute ezgmail.init() desde el shell de Python. 
  • Esto abre una ventana del navegador y nos lleva a la página de autenticación. Luego debemos seleccionar la cuenta de Google y autorizar a la aplicación a usar nuestra cuenta.

La configuración está completa. Ahora, veremos cómo usar este módulo.

Envío de correo electrónico

La función send() se utiliza para enviar correos electrónicos.

Sintaxis: ezgmail.send (correo electrónico, sub, texto)

Parámetros:

  • email: dirección de correo electrónico del destinatario
  • sub:  Asunto del correo electrónico
  • texto: cuerpo del correo electrónico

Ejemplo:

Python3

import ezgmail
  
email = 'user@email.com'
subject = 'EZGmail Test'
text = 'This is the body of the mail.'
ezgmail.send(email, subject, text)

Esto enviará un correo electrónico al destinatario desde nuestra cuenta de Gmail seleccionada. 

Leer correo electrónico

EZGmail tiene el objeto GmailThread para representar hilos de conversación y el objeto GmailMessage para correos electrónicos individuales. El atributo de mensajes del objeto GmailThread contiene una lista de objetos GmailMessage para cada mensaje en el hilo de conversación.

  • unread() : el método devuelve una lista de objetos GmailThread para hilos no leídos.
  • resumen(): cuando se llama en la lista de objetos de hilo, devuelve un resumen de los mensajes en el hilo.
  • mensajes : atributo del objeto GmailThread que devuelve una lista de objetos GmailMessage . Cada uno de estos tiene atributos que describen el correo electrónico como asunto , cuerpo , marca de tiempo , remitente y destinatario.
  • recent() : función que devuelve una lista de objetos GmailThread para hilos recientes. El parámetro maxResults se usa para establecer la cantidad de correos electrónicos recientes que se mostrarán. El valor predeterminado es 25.

Ejemplo:

Python3

import ezgmail
  
# unread emails
unread = ezgmail.unread()
  
print("Summary: "+str(ezgmail.summary(unread)))
print("The first thread in the list: " + str(unread[0]))
print("The first message in the first thread: " + str(unread[0].messages[0]))
  
# attributes of the first message
message = unread[0].messages[0]
  
# subject
print("subject: "+str(message.subject))
  
# body
print("body: "+str(message.body))
  
# sender
print("sender: "+str(message.sender))
  
# timestamp
print("timestamp: "+str(message.timestamp))
  
# recent emails
recent = ezgmail.recent(maxResults=10)
print("List of recent threads: " + str(recent))

Búsqueda de correos electrónicos

También podemos buscar correos electrónicos específicos, de la misma manera ingresamos consultas en el cuadro de búsqueda de gmail. La función search() devuelve una lista de objetos GmailMessage que coinciden con el parámetro de búsqueda. También podemos realizar operaciones especiales de búsqueda como:

  • ‘from:sender@email.com’: obtener correos electrónicos de un remitente en particular
  • ‘subject:Python’: correos electrónicos con un asunto específico
  • ‘label:UNREAD’ : correos electrónicos no leídos
  • ‘has:attachment’ : correos electrónicos que contienen un archivo adjunto

Ejemplo:

Python3

import ezgmail
  
# searching for specific emails
results = ezgmail.search('geeksforgeeks')
print(results[0])
  
# special searches
results = ezgmail.search('has:attachment')
print(results[0])

Descarga de archivos adjuntos

Los archivos adjuntos a un mensaje se pueden descargar pasando el nombre de cada archivo a la función downloadAttachment() .

  • El atributo de archivos adjuntos del objeto GmailMessage devuelve una lista de nombres de los archivos adjuntos con el correo electrónico.
  • El método downloadAttachment() toma como argumento cualquiera de estos nombres de archivo y descarga ese archivo.
  • El método downloadAllAttachments() se utiliza para descargar todos los archivos a la vez.

Ejemplo:

Python3

import ezgmail
  
# searching emails
# with attachments
results = ezgmail.search('has:attachment')
  
# list of attached filenames
files_attached = results[0].messages[0].attachments
  
# downloading the first file
# in the list
print('Downloading '+files_attached[0])
results[0].messages[0].downloadAttachment(files_attached[0])

Publicación traducida automáticamente

Artículo escrito por cosine1509 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *