README
EmailHandler
Un'app desktop gratuita che ripulisce la tua casella di posta con l'AI.

Cosa fa
| Etichetta ogni email | Jev (il modello decisionale di TypeSafe) mette ogni email in una delle 11 etichette colorate (Fatture, Ordini, Newsletter, Promozioni, Social, Lavoro, Personale, Viaggi, Sicurezza, Spam, Altro), nella tua lingua. |
| Trova ciò che conta | Un'etichetta Importanti per ricevute, contratti, ricette mediche e conversazioni vere. Si affianca all'etichetta normale. |
| Trova cosa puoi eliminare | Promozioni, avvisi scaduti, vecchi aggiornamenti di spedizione. Le email vecchie (6 mesi o più) ricevono un punteggio di "importanza oggi" da 0 a 4, così puoi liberarti di anni di arretrato, etichettato o no. |
| Disiscrive in blocco | Con un clic (RFC 8058) quando il mittente lo supporta, con un'email quando non lo fa, con un link come ultima risorsa. Mai per lo spam. |
| Pulisce per mittente | Etichetta o cestina tutto ciò che arriva da un mittente in un periodo, vedendo prima il numero esatto. |
| Svuota il Cestino | Un clic, definitivo, con una conferma. |
| Più account | Gmail e Outlook fianco a fianco, una sola chiave Jev per tutti. |
Niente succede da solo. Ogni azione richiede il tuo clic e mostra prima il numero esatto di email. Le email speciali (Gmail) e contrassegnate (Outlook) non vengono mai toccate. Eliminare sposta prima nel Cestino (30 giorni), a meno che tu non lo svuoti.
Privata per scelta
Non esiste un server di EmailHandler. Tutto gira sul tuo computer:
- La tua casella viene chiamata direttamente con il tuo accesso (Google o Microsoft).
- Jev viene chiamato direttamente con la tua chiave TypeSafe.
- I token di accesso e la chiave Jev memorizzata sono cifrati con il portachiavi del sistema (Portachiavi, DPAPI, libsecret). Su Linux senza un portachiavi l'app ti avvisa che hanno solo una protezione di base.
- I risultati delle scansioni restano in un database locale, uno per account. Il testo delle email non viene mai salvato.
Accesso
Fai clic su Accedi con Google o Accedi con Microsoft. Il browser apre la solita pagina di accesso del provider; approva l'accesso e torni nell'app. Tutto qui: niente configurazione, niente codici da copiare.
| Provider | Funziona con |
|---|---|
| Gmail, Google Workspace | |
| Microsoft | Outlook.com, Hotmail, Live, MSN, Microsoft 365 |
Durante la beta Google fa accedere solo i tester invitati e mostra "Google non ha verificato questa app": fai clic su Avanzate → Vai a EmailHandler. Microsoft potrebbe indicare l'app come "non verificata". Entrambi gli avvisi spariscono quando l'app viene verificata.
Sviluppo
Richiede Node 24 (nvm use).
npm install
npm start # dev server Angular su :4300 + finestra Electron
npm test # test unitari (SSRF guard, OAuth/PKCE, account, mapping Graph, disiscrizione)
npm run test:it # test di integrazione Outlook dentro Electron (Microsoft Graph finto)
npm run typecheck # UI (template inclusi) + Electron
npm run app # compila, poi avvia l'app compilata
npm run brand # rigenera icona, og-image e anteprima social di GitHub da build/*.svg|html
La documentazione tecnica, con cosa fa ogni file e funzione, è in docs/TECHNICAL.md (nel codice sorgente).
Client ID (solo per sviluppatori)
L'accesso richiede un client ID gratuito per provider. Identifica l'app, non l'utente, ed è incluso nell'app, quindi gli utenti non lo vedono mai.
- Creali una volta: guida passo passo in
docs/guida-client-id.html(nel codice sorgente). - Mettili in
oauth.config.jsonnella radice del repo, seguendooauth.config.example.json. Il file è in .gitignore e viene incluso in ogni build. - In sviluppo puoi usare invece
EH_GOOGLE_CLIENT_ID,EH_GOOGLE_CLIENT_SECRETeEH_MICROSOFT_CLIENT_ID.
Una build senza client ID mostra il pulsante di quel provider disattivato ("L'accesso non è disponibile in questa build").
Creare gli installer (gratis, non firmati)
npm run dist:mac # .dmg + .zip (arm64, x64), firma ad-hoc
npm run dist:win # installer NSIS (x64, arm64), non firmato
npm run dist:linux # AppImage + .deb (x64, arm64)
npm run pack # app non impacchettata per il sistema attuale, per i test
I file finiscono in release/. Conviene compilare ogni sistema sulla sua macchina, per esempio sui runner gratuiti di GitHub Actions.
Non essendoci un certificato di firma a pagamento, il primo avvio richiede un passaggio in più:
- macOS: apri l'app una volta, poi Impostazioni di Sistema → Privacy e sicurezza → Apri comunque. Oppure esegui
xattr -dr com.apple.quarantine /Applications/EmailHandler.app. - Windows: su "Windows ha protetto il PC", fai clic su Ulteriori informazioni → Esegui comunque.
- Linux:
chmod +x EmailHandler-*.AppImage, oppure installa il.deb.
Struttura
electron/ processo principale: finestra senza cornice, protocollo app:// + CSP, IPC,
accesso (Google + Microsoft), Gmail + Microsoft Graph, Jev,
disiscrizione con un clic (SSRF guard), segreti cifrati
src/ UI Angular (setup + app), EN/IT; parla con electron/ solo tramite window.emailHandler
build/ icona, immagine di condivisione, entitlements macOS
tools/ generatore delle immagini del brand
docs/ documentazione tecnica + guida ai client ID
landing/ vecchia landing page web (non compilata)