Não funciona porque os filtros (e a versão atual do FiltaQuilla) só veem a representação de texto do código HTML durante a filtragem, se houver algum, porque para algumas pastas (pastas IMAP off-line) eles só veem os cabeçalhos da mensagem. / p>
Eu realmente não sei por que os filtros padrão no Thunderbird não permitem que os usuários filtrem o corpo bruto, eu acho que é porque ninguém o solicitou. Além disso, eu não sei por que plugins sofisticados como o FiltaQuilla não fornecem acesso direto ao corpo pronto para uso. Mais uma vez, talvez seja falta de interesse do usuário.
Então, posso dizer como fazer isso com o FiltaQuilla, mas você não vai gostar. É confuso, lento, lento, frágil e nada fácil de usar. Mas é possível. Funciona no meu computador. Deve funcionar no seu. A menos, é claro, que o Thunderbird trave e corrompa sua caixa de correio (como aconteceu uma vez aqui enquanto eu estava testando isso, nunca funcionou novamente nessa pasta). Surpreendentemente, funcionou perfeitamente com as minhas pastas IMAP. Então pense nisso como um experimento, não uma solução final.
Se você já possui o FiltaQuilla, ative o Javascript na guia Search Term na janela Preferences (reinicie o Thunderbird).
Agora, crie um filtro como de costume, na lista de pesquisa que busca JavaScript. Na próxima lista, escolha as partidas. Haverá um ícone de edição, selecione-o e insira o seguinte código (Nota: este código é baseado em alguns testes incluídos com o código-fonte do Thunderbird):
let mylist = ["emv3.com", "_blank", "tumblr.com", "xxxx"];
var matchfound = -1;
const MAX_MESSAGE_LENGTH = 10240;
let msgFolder = message.folder;
let msgUri = msgFolder.getUriForMsg(message);
let messenger = Cc["@mozilla.org/messenger;1"].createInstance(Ci.nsIMessenger);
let streamListener = Cc["@mozilla.org/network/sync-stream-listener;1"].createInstance(Ci.nsISyncStreamListener);
messenger.messageServiceFromURI(msgUri).streamMessage(msgUri, streamListener, null, null, false, "", false);
let sis = Cc["@mozilla.org/scriptableinputstream;1"].createInstance(Ci.nsIScriptableInputStream);
sis.init(streamListener.inputStream);
let rawbody = sis.read(MAX_MESSAGE_LENGTH);
for (let listidx = 0; listidx < mylist.length; listidx++) {
//Components.utils.reportError("Checking " + mylist[listidx] + " in " + message.subject);
matchfound = rawbody.search(mylist[listidx]);
if (matchfound>0) {
Components.utils.reportError("Matched " + matchfound + " " + mylist[listidx] + " in " + message.subject);
break;
}
}
(matchfound>0)
Você vê a linha "let mylist="? Essa é uma matriz de JavaScript. Você pode preenchê-lo com strings de texto para pesquisar. Você vê o MAX_MESSAGE_LENGTH = 10240? isso é o quão longe do início da mensagem este código irá procurar. Geralmente 10K é suficiente como mensagem de spam maior que inclui imagens ou outros anexos.
Feche a janela de edição com OK.
Defina suas ações (mover, excluir, sinalizar, etc.).
Tente executá-lo.
Se você ativou o console de depuração no Thunderbird, poderá ver uma lista de correspondências (este não é o log de filtro normal).
Uma nota final, esse script não decodifica a codificação Base64 (ou qualquer outra). Uma mensagem codificada em Base64 não corresponderá a nada.
Outra observação, enquanto navega brevemente no código-fonte do Thunderbird, acho que o filtro Bayesiano tem acesso ao corpo da mensagem bruta, no entanto, não sei se isso significa alguma coisa para você.
Então, para uma resposta melhor, suas opções são:
- Escreva você mesmo um plugin.
- Peça a um autor de plug-in para adicionar suporte para acesso a corpo não processado (o autor do FiltaQuilla parece ser uma pessoa legal, você pode perguntar nos fóruns do FiltaQuilla).