# Ultimail **Équivalent** : Gmail **Statut** : Partiel (backend avancé, incomplet) --- ## Résumé Client mail unifié multi-comptes avec backend de synchronisation. Un compte Ultimail gère plusieurs comptes mail (SMTP/IMAP/POP3) avec identités d'envoi/réception distinctes, catch-all, et libellés unifiés. ## État d'implémentation réel (mai 2026) ### Déjà implémenté - API `/api/v1/mail` avec endpoints comptes, messages, threads, envoi, règles, webhooks. - Workers backend IMAP sync et SMTP outbox démarrés au boot. - Schéma SQL principal mail en place (accounts, messages, folders, rules, outbox, webhooks, attachments). ### Partiel / incomplet - Outbox planifiée: incohérence de statuts `scheduled`/`queued`. - Règles et webhooks: briques présentes mais pas entièrement branchées au pipeline réel de réception. - Threading, pièces jointes et identités d'envoi encore incomplets. - Realtime WS non finalisé côté auth/events. ### Non commencé - Tri IA en production. - Tokens API fine-grained pour agents externes. - Expérience desktop Tauri/mobile branchée au backend réel. ## Points de différenciation vs Gmail - Webhooks avancés avec système de templates personnalisables (Slack, Discord, custom) - Connectivité contrôlée avec agents IA via tokens API fine-grained - Tri intelligent par LLM (fournisseurs OpenAI-compatibles, prompt personnalisé par règle) - Hébergement souverain, données sous contrôle - Multi-comptes natif avec unification complète (libellés, dossiers, recherche cross-comptes) ## Fonctionnalités ### Core - [ ] Réception / envoi de mails (IMAP/SMTP) - [ ] Multi-comptes avec identités d'envoi/réception - [ ] Catch-all (envoi et réception) - [ ] Conversations / threads - [ ] Libellés et dossiers unifiés - [ ] Recherche avancée - [ ] Pièces jointes - [ ] Brouillons, envoi programmé - [ ] Contacts intégrés ### Automatisations - [ ] Règles de tri à la réception - [ ] Forward automatique - [ ] Réponses automatiques - [ ] Webhooks avec templates - [ ] Tri IA (LLM + prompt personnalisé) - [ ] Tokens API fine-grained pour agents ### UX - [ ] Interface inspirée Gmail (migration sans friction) - [ ] Desktop web + Tauri + mobile — UX uniforme - [ ] Thèmes, densité, préférences par compte - [ ] Raccourcis clavier complets - [ ] Offline-first avec sync backend ## Intégration avec la suite (Nextcloud) Ultimail utilise sa **propre stack mail** (pas le module mail de Nextcloud qui est insuffisant) mais s'intègre avec l'instance Nextcloud partagée pour les services complémentaires : ### Ce qu'Ultimail utilise de Nextcloud | Service | Usage dans Ultimail | API | |---------|--------------------|----| | **Ultidrive (WebDAV)** | Sauvegarder les pièces jointes dans Drive | PUT `/remote.php/dav/files/{user}/` | | **Ultidrive (WebDAV)** | Insérer des fichiers Drive dans un mail | GET + lien de partage OCS | | **Agenda (CalDAV)** | Détecter les invitations .ics et créer des événements | PUT `.../calendars/{user}/{cal}/{uid}.ics` | | **Agenda (CalDAV)** | Afficher les événements du jour dans la sidebar mail | REPORT calendar-query | | **Contacts (CardDAV)** | Autocomplétion destinataires depuis le carnet | REPORT addressbook-query | | **Contacts (CardDAV)** | Enrichir les fiches contact avec l'historique mail | Sync bidirectionnelle | ### Ce qu'Ultimail NE délègue PAS à Nextcloud - **IMAP/SMTP** — client mail custom (stalwart-mail, maddy, ou implémentation propre) - **Stockage des mails** — PostgreSQL + object storage propre (pas la DB Nextcloud) - **Règles de tri, automatisations, webhooks** — moteur custom dans le backend Ultimail - **Recherche mail** — index dédié (Meilisearch/Typesense) distinct de la recherche NC - **Auth mail** — OAuth2/App passwords gérés par le backend Ultimail, pas par NC ### Flux d'interaction ``` ┌──────────────────────────────────────────────────────────┐ │ Frontend Ultimail │ └────────────┬─────────────────────────────┬───────────────┘ │ │ ▼ ▼ ┌────────────────────────┐ ┌────────────────────────────┐ │ Backend Ultimail │ │ Nextcloud (headless) │ │ ├─ IMAP/SMTP client │ │ ├─ WebDAV (pièces jointes) │ ├─ Moteur de règles │───▶│ ├─ CalDAV (invitations) │ │ ├─ Stockage mails │ │ └─ CardDAV (contacts) │ │ ├─ Webhooks/IA │ └────────────────────────────┘ │ └─ API sync clients │ └────────────────────────┘ ``` Le backend Ultimail communique avec Nextcloud **côté serveur** pour : - Créer un événement quand un mail contient une invitation .ics - Résoudre les contacts pour l'affichage (photo, nom complet) - Proposer "Sauvegarder dans Drive" pour les pièces jointes ## Briques technologiques envisagées | Besoin | Option retenue | Alternatives | |--------|----------------|--------------| | IMAP/SMTP | stalwart-mail, maddy, ou client custom | — | | Recherche full-text | Meilisearch, Typesense | — | | Stockage mails | PostgreSQL + object storage (attachments) | — | | Push/sync temps réel | WebSocket, SSE | — | | Pièces jointes → Drive | Nextcloud WebDAV (même instance) | — | | Calendrier (invitations) | Nextcloud CalDAV (même instance) | — | | Contacts (autocomplétion) | Nextcloud CardDAV (même instance) | — | | Auth | OIDC partagé Ulti Suite | — | ## Voir aussi - [CLAUDE.md](../CLAUDE.md) — contexte technique détaillé du frontend actuel - [ultidrive.md](ultidrive.md) — détails intégration Nextcloud fichiers - [agenda.md](agenda.md) — détails intégration Nextcloud calendrier - [contacts.md](contacts.md) — détails intégration Nextcloud contacts - `components/gmail/README.md` — arborescence composants - `lib/stores/README.md` — architecture stores