Alguns exemplos úteis de uso do imaplib do python para verificar sua caixa de entrada. Isso só foi testado com uma caixa de entrada do gmail até agora.
Algumas leituras especialmente úteis sobre IMAP
Definir um intervalo de tempo razoável
Você provavelmente não quer começar a rastrear sua caixa de entrada até os primeiros e-mails que recebeu, portanto, o módulo datetime será útil. Especificamente, gosto de usar:
date = (datetime.date.today() - datetime.timedelta(1)).strftime("%d-%b-%Y")
para obter uma data formatada corretamente representando ontem. Basta alterar o argumento para a função timedelta se quiser verificar mais adiante.
A sintaxe relevante para usar isso será algo ao longo das linhas de:
'(SENTSINCE {0})'.format(date)
isso irá dentro de um comando de pesquisa IMAP como parte de seus filtros
Especificando um remetente específico para procurar
Se estiver procurando um e-mail de alguém em particular, você pode usar:
'(FROM {0})'.format(eml.strip())
Seria perigoso omitir o strip call em geral.
Pesquisando somente emails não vistos
Para pesquisar apenas e-mails não vistos, a sintaxe relevante do python / IMAP é:
'(UNSEEN)'
Um Exemplo Completo
CONN = imaplib.IMAP4_SSL("imap.gmail.com")
login("your email", "your password", CONN)
date = (datetime.date.today() - datetime.timedelta(1)).strftime("%d-%b-%Y")
(_, data) = CONN.search(None, ('UNSEEN'), '(SENTSINCE {0})'.format(date)), '(FROM {0})'.format("someone@yahoo.com".strip()))
ids = data[0].split()
Isso recuperará todos os e-mails NÃO Vistos enviados no último dia de ” alguem@yahoo.com “, na forma de id de mensagem, que você pode usar para processar posteriormente os e-mails individuais.
A função de login deve ser semelhante a:
conn.login(user, password)
conn.list()
readonly = True
conn.select("INBOX", readonly)
A parte somente leitura é realmente muito importante se você não quiser que o script mova os e-mails que encontrar para a sua seção “lida”. Com o bit somente leitura definido como verdadeiro, sua caixa de entrada não será modificada de forma alguma.