Python3 – Exemplo de como obter a última mensagem recebida no Gmail

image_pdfimage_print

Um código de exemplo que pode ser facilmente adaptado para outras funções além de obter a última mensagem recebida no Gmail.

É apenas uma demonstração de como se faz cada etapa de acessar, identificar o email, obter o conteúdo, parseá-lo e exibí-lo um email recebido no Gmail.

import email
import imaplib
 
#Conecta ao servidor imap do gmail
m = imaplib.IMAP4_SSL("imap.gmail.com",993)
 
#Efetua o login
m.login("<login>@gmail.com","<senha>")

#Seleciona a caixa de entrada 'INBOX'
m.select()

#Obtem a ultima mensagem recebida
latest_email_uid = m.uid('search',None,"ALL")[1][0].split()[-1]

#Obtem o conteudo txt de todo o email
raw_email = m.uid('fetch', latest_email_uid, '(RFC822)')[1][0][1]

#Efetua o parseamento do conteudo txt do email para dar significado aos dados existentes no txt
email_message = email.message_from_string(raw_email.decode())

'''
Possivel dados que pode ser obtidos de email_message, object resultado do parseamento da mensagem txt
Delivered-To
Received
Return-Path
Received-SPF
Authentication-Results
X-Received
DKIM-Signature
DKIM-Signature
X-Received
X-BeenThere
Received
X-Received
Date
From
To
Message-Id
In-Reply-To
References
Subject
MIME-Version
X-Original-Sender
Reply-To
Precedence
Mailing-list
List-ID
X-Google-Group-Id
List-Post
List-Help
List-Archive
Sender
List-Subscribe
List-Unsubscribe
Content-Type
'''

#Exemplo de como obter estes dados de email_message
print(email_message['To'])
print(email_message['From'])
print(email_message['Subject'])
print(email_message['Content-Type'])


#Uma das formas de obter o corpo do conteúdo do email
maintype = email_message.get_content_maintype()
if maintype == 'multipart':
    for part in email_message.get_payload():
        if part.get_content_maintype() == 'text':
            body = part.get_payload()
elif maintype == 'text':
    body = email_message.get_payload()

#Exibindo o corpo do último email
print(body)
Gostou? Tire um minutinho e dê sua contribuição para Drall Dev Community no Patreon!