Pergunta

Quero analisar alguns e-mails da caixa de entrada de um usuário, mas quando o faço:

typ, msg_data = imap_conn.fetch(uid, '(RFC822)')

Marca o e-mail como VISTO ou lido.Esta não é a funcionalidade desejada.Você sabe como posso manter o e-mail com a aparência anterior, VISTO ou NÃO VISTO?

Foi útil?

Solução

Você também pode definir read_only para true ao selecionar a pasta:

imap_conn.select('Inbox', readonly=True)

Outras dicas

O seguinte deve funcionar:

typ, msg_data = imap_conn.fetch(uid, '(BODY.PEEK[HEADER])')

ou BODY.PEEK[TEXT], etc.

Você pode usar (RFC822.PEEK) como o argumento das "partes da mensagem", de acordo com RFC 1730 (Não verifiquei quais servidores realmente implementam isso corretamente, mas não parece difícil para eles).

Você pode usar o pacote imap_tools:https://pypi.org/project/imap-tools/

from imap_tools import MailBox, Q

# get list of email subjects from INBOX folder
with MailBox('imap.mail.com').login('test@mail.com', 'password') as mailbox:
    # mark_seen=False - not mark emails as seen on fetch
    subjects = [msg.subject for msg in mailbox.fetch(mark_seen=False)]
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top