Como acessar e-mails com Python.
Automação é umas das coisas mais importantes hoje em dia, seja na vida pessoal ou dentro de uma empresa. Esse artigo mostra como podemos acessar nossa caixa de e-mail usando poucas linhas de código em Python.
Vamos começar instalando a biblioteca imap_tools usando PIP no terminal.
pip install imap_toolsImportando a biblioteca da seguinte forma, podemos criar as variáveis para o e-mail e senha. Iremos utilizar o método Mailbox para fazer login e ter acesso a caixa de entrada, então também vamos criar uma variável login para ele.
from imap_tools import Mailbox, AND
meu_email = 'meuemail@...'
senha = '12345678'
login = Mailbox('imap.zoho.com').login(meu_email, senha)Irei utilizar a zoho nesse exemplo. A Google desativou o acesso de terceiros por e-mail e senha, então esse método não é mais possível no Gmail. Nos demais serviços de e-mail o processo é o mesmo.
Get Gabriel H. Silva’s stories in your inbox
Join Medium for free to get updates from this writer.
Devemos ativar o acesso via imap no nosso e-mail. Para o zoho:
- Configurações
- Contas de e-mail
- IMAP
Deixar marcado o “Acesso IMAP” e salvar.
Feito isso, vamos criar uma variável para pegar os e-mails. Vamos utilizar a função fetch para pegar todos os e-mails e nesse exemplo utilizarei o método AND(importado anteriormente) como parâmetro para filtrar por e-mails enviados por mim(from_) e para mim(to). Para saber mais sobre os parâmetros que podem ser usados, acesse o repositório da biblioteca: imap_tools.
from imap_tools import Mailbox, AND
meu_email = 'meuemail@...'
senha = '12345678'
login = Mailbox('imap.zoho.com').login(meu_email, senha)
lista_emails = login.fetch(AND(from_=meu_email, to=meu_email))A variável lista_emails é um objeto que podemos transformar em lista, o e-mail mais recente sempre estará na ultima posição da lista, o código ficará assim:
from imap_tools import Mailbox, AND
meu_email = 'meuemail@...'
senha = '12345678'
login = Mailbox('imap.zoho.com').login(meu_email, senha)
lista_emails = login.fetch(AND(from_=meu_email, to=meu_email))
email = list(lista_emails)[-1]O e-mail mais recente enviado por mim e para mim está nesse formato.
Podemos usar o atributo .text na variável email para pegar o corpo do e-mail em formato de texto.
from imap_tools import Mailbox, AND
meu_email = 'meuemail@...'
senha = '12345678'
login = Mailbox('imap.zoho.com').login(meu_email, senha)
lista_emails = login.fetch(AND(from_=meu_email, to=meu_email))
email = list(lista_emails)[-1]
print(email.text)Ao printar teremos o resultado:
Conteúdo do e-mail.




