Python | Obtenga sus correos electrónicos de Gmail de un usuario en particular

Si alguna vez tiene curiosidad por saber cómo podemos obtener correos electrónicos de Gmail usando Python, este artículo es para usted.
Como sabemos, Python es un lenguaje de múltiples utilidades que se puede usar para realizar una amplia gama de tareas. Sin embargo, obtener correos electrónicos de Gmail es una tarea tediosa, pero con Python, se pueden hacer muchas cosas si está bien versado en su uso. Gmail proporciona acceso IMAP a los clientes que desean acceder a Gmail sin iniciar sesión manualmente en el navegador.

En la página de configuración, habilite esto antes de ejecutar el script. 

Implementación: 
las bibliotecas utilizadas en esta implementación incluyen imaplib , email . Tienes que ir manualmente y habilitar el acceso IMAP yendo a la configuración de tu cuenta de Gmail . Después de esto, solo podrá acceder a su cuenta de Gmail sin iniciar sesión en el navegador. 

  • Se definen tres funciones en la implementación que se utiliza para obtener el cuerpo del correo electrónico, buscar correos electrónicos de un usuario en particular y obtener todos los correos electrónicos bajo una etiqueta.
  • Para mostrar los resultados, envié un correo electrónico a mi identificación desde mi otra cuenta de Gmail. Ahora buscaré correos electrónicos de mi cuenta de Gmail que se reciben de mi otra cuenta de Gmail.
  • El proceso comienza con la conexión de Gmail con la ayuda de la biblioteca imaplib y la prueba de nuestras credenciales de inicio de sesión de Gmail.
  • Después de iniciar sesión, seleccionamos correos electrónicos bajo la etiqueta: Bandeja de entrada, que es una sección etiquetada predeterminada para todos los usuarios. Sin embargo, también puede crear sus propias etiquetas.
  • Luego llamamos a la función de obtener correos electrónicos y le proporcionamos el parámetro del resultado de la función de búsqueda, es decir, «del usuario»
  • En la función de obtener correos electrónicos, colocamos todos los correos electrónicos en una array llamada «msgs»
  • Ahora imprima para ver la array msgs
  • Ahora podemos iterar fácilmente sobre esta array. Lo estamos iterando en el orden en que llegaron los correos electrónicos. Luego estamos buscando el índice desde donde comienza nuestro contenido. Esta parte de indexación será diferente para diferentes correos electrónicos/usuarios y el usuario puede cambiar manualmente los índices para imprimir solo la parte que necesita.
  • Tenemos nuestros resultados impresos.

A continuación se muestra la implementación de Python:  

Python3

# Importing libraries
import imaplib, email
 
user = 'USER_EMAIL_ADDRESS'
password = 'USER_PASSWORD'
imap_url = 'imap.gmail.com'
 
# Function to get email content part i.e its body part
def get_body(msg):
    if msg.is_multipart():
        return get_body(msg.get_payload(0))
    else:
        return msg.get_payload(None, True)
 
# Function to search for a key value pair
def search(key, value, con):
    result, data = con.search(None, key, '"{}"'.format(value))
    return data
 
# Function to get the list of emails under this label
def get_emails(result_bytes):
    msgs = [] # all the email data are pushed inside an array
    for num in result_bytes[0].split():
        typ, data = con.fetch(num, '(RFC822)')
        msgs.append(data)
 
    return msgs
 
# this is done to make SSL connection with GMAIL
con = imaplib.IMAP4_SSL(imap_url)
 
# logging the user in
con.login(user, password)
 
# calling function to check for email under this label
con.select('Inbox')
 
 # fetching emails from this user "tu**h*****1@gmail.com"
msgs = get_emails(search('FROM', 'MY_ANOTHER_GMAIL_ADDRESS', con))
 
# Uncomment this to see what actually comes as data
# print(msgs)
 
 
# Finding the required content from our msgs
# User can make custom changes in this part to
# fetch the required content he / she needs
 
# printing them by the order they are displayed in your gmail
for msg in msgs[::-1]:
    for sent in msg:
        if type(sent) is tuple:
 
            # encoding set as utf-8
            content = str(sent[1], 'utf-8')
            data = str(content)
 
            # Handling errors related to unicodenecode
            try:
                indexstart = data.find("ltr")
                data2 = data[indexstart + 5: len(data)]
                indexend = data2.find("</div>")
 
                # printtng the required content which we need
                # to extract from our email i.e our body
                print(data2[0: indexend])
 
            except UnicodeEncodeError as e:
                pass

Producción: 

Publicación traducida automáticamente

Artículo escrito por md1844 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 *