Consulta a contagem de emails não lidos do Thunderbird via terminal

1

Eu quero adicionar ao indicador da barra de status do i3, mostrando o número de e-mails não lidos no perfil do Thunderbird. Como o próprio Thunderbird não tem opções de linha de comando para obter essas informações, eu tentei consultar o banco de dados usando X-Mozilla-Status code:

$ grep 'X-Mozilla-Status:' ~/.thunderbird/<profile>/ImapMail/<email>/INBOX

Mas parece que todas as mensagens têm o mesmo código de status (não há diferença se a mensagem não foi lida ou não):

X-Mozilla-Status: 0001
X-Mozilla-Status2: 00000000

Há alguma outra maneira de criar um script para obter estatísticas de contagem de e-mails totais / não lidos?

    
por anlar 11.11.2018 / 17:57

2 respostas

2

Espero que os resultados de algumas experiências sejam úteis. (Tbird 60.3.1, MX-Linux 17.1) Como anlar disse, o arquivo INBOX muda quando uma mensagem é recebida, mas não quando é visualizada ou lida. O INBOX.msf correspondente, que está em formato mork incompreensível, registra essas ações.

Uma tag (^ 94 = 1) é adicionada a INBOX.msf quando uma nova mensagem é recebida e (^ 94 = 0) é anexada quando uma mensagem não lida anteriormente é lida ou visualizada. Portanto, se

grep '(^94=.)' /home/user/.thunderbird/profile-name/ImapMail/imap.account.com/INBOX.msf | tail -1

mostra (^ 94 = 1), há pelo menos uma nova mensagem nessa conta. Se (^ 94 = 0) a última ação foi ler ou visualizar uma nova mensagem; ainda pode haver mensagens não lidas, no entanto. ( Editar: nome do arquivo corrigido )

Isto é apenas tentativa e erro, mas um script baseado nele (novo detector de msg apenas, sem contagem) está funcionando bem até agora :) (veja esta questão no fórum da Mozilla.)

Adicionado:

os campos do arquivo msf são listados no começo; entre eles são (A1 = numMsgs) (A2 = numNewMsgs). Não está claro como usar isso para obter uma contagem. Por exemplo, esta conta tem 3 novas mensagens:

grep -n '(^A2=.)' INBOX.msf
432:    (^A8^85)(^B5=50)(^A1=20)(^A2=2)(^A6=50)(^BD^77A)(^C4=12)(^C5=2)
433:    (^C6=0)(^C7=0)(^C9^5B0)(^C8^A0)(^A4^760)(^A2=0)(^A2=0)(^A2=0)(^AA=0)]}
480:    (^B0=1)(^88^83)(^B1=222)(^B2^84)(^A8^85)(^B5=50)(^A1=21)(^A2=3)
482:    (^A4^760)(^A2=0)(^A2=0)(^A2=0)(^AA=0)]

Talvez alguém que conhece mork possa explicar como extrair o número certo?

    
por 07.12.2018 / 21:47
0

De este artigo :

Thunderbird doesn't have a scripting capability.

O mesmo artigo recomenda ler diretamente os arquivos da caixa de correio, verificando o X-Mozilla-Status como você já está fazendo (e aparentemente não está funcionando como esperado). Veja esse artigo para mais pointera no cabeçalho X-Mozilla-Status e formato mbox, para checar se o que você está fazendo está combinando com as instruções deles.

Outra possibilidade é que você está usando o IMAP do Thunderbird e ele se comporta de maneira diferente nesse caso. O IMAP tem sinalizadores especiais (como \Seen para acompanhar o status da mensagem e é possível que o Thunderbird esteja armazenando em cache e processando-os, talvez também procure por eles. Se você estiver usando o IMAP, outra opção é usar um cliente IMAP separado para consultar o servidor diretamente (você encontrará ligações IMAP para as linguagens de script mais comuns.) Essa abordagem tem a desvantagem de você usar a rede para essa verificação e também terá que gerenciar e armazenar credenciais.

    
por 11.11.2018 / 19:15