Na verdade, é possível com o FiltaQuilla. (Tentei FiltaQuilla 1.1.0, com o Thunderbird 3.1.9).
Abaixo está um script de teste colocado em "ação de javascript com o corpo" fornecido pela FiltaQuilla. Ele mostra todas as propriedades do cabeçalho e o corpo no console de erros.
Quando esses campos de dados estiverem disponíveis para o código, ele precisará percorrer as pastas e mensagens do messenger para compará-las. Talvez usando a propriedade "threadParent" no hdr pode simplificar a lógica, consulte nsIMsgDBHdr no MDC para uma dica. No código, propriedades extras podem ser definidas. Por exemplo, defina "hdr.myvar = '1234'" no código para mensagens duplicadas, depois em um filtro de correspondência mais recente myvar para 1234 e execute uma ação normal para excluí-las.
Como esse script é a parte de ação de um filtro, a parte da condição do filtro precisa corresponder a todas as mensagens de interesse. Neste teste, o script é organizado após uma ação para copiar a mensagem para uma pasta local, que pode ou não ser necessária, mas baixa o corpo da mensagem para a máquina local em uma conta IMAP, para que a ação tenha um corpo para Acesso.
//FiltaQuilla filter action script:
for (let index = 0; index < msgHdrs.length; index++)
{ //get msg hdr:
let hdr = msgHdrs.queryElementAt(index, Ci.nsIMsgDBHdr);
//show subject: get it in two ways
let s = hdr.getStringProperty("subject");
if ( s != undefined && s.length != undefined && s.length > 0)
Cu.reportError(" flt log1: " + s.length + " " + s);
Cu.reportError(" flt log2: " + hdr.subject );
//show all properties of hdr: uncomment to show.
//let e = hdr.propertyEnumerator;
//while ( e.hasMore() ) Cu.reportError(" flt log3: " + e.getNext() );
//get body: from an example on MDC: getMessageBody(aMessageHeader)
//Actions configured in the filter: Without [1], it takes long long time.
// [1] copy msg to a local folder.
// [2] "Javascript Action with Body" with this script.
{ let messenger = Components.classes["@mozilla.org/messenger;1"]
.createInstance(Components.interfaces.nsIMessenger);
let listener = Components.classes["@mozilla.org/network/sync-stream-listener;1"]
.createInstance(Components.interfaces.nsISyncStreamListener);
let uri = hdr.folder.getUriForMsg(hdr);
messenger.messageServiceFromURI(uri)
.streamMessage(uri, listener, null, null, false, "");
let folder = hdr.folder;
let body = folder.getMsgTextFromStream(listener.inputStream,
hdr.Charset, 65536, 32768, false, true, { });
//show body:
Cu.reportError(" flt log4: " + body.length + " " + body);
}
}