Obtenha um e-mail com imaplib, mas não o marque como VISTO
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?
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