diff --git a/docs/mail-integration.md b/docs/mail-integration.md index 92edece..5e4544a 100644 --- a/docs/mail-integration.md +++ b/docs/mail-integration.md @@ -35,6 +35,7 @@ > make mail-sync # synchro complète > docker exec -i -u www-data php-lesstime-fpm php bin/console app:mail:sync --folder=INBOX -v > docker exec -i -u www-data php-lesstime-fpm php bin/console messenger:consume async -vv # worker (fait marcher le bouton) +> docker exec -i php-lesstime-fpm php bin/console app:mail:redecode-headers [--dry-run] # re-décode les en-têtes MIME déjà en base (backfill) > make test # 33 tests > ``` > Fixtures `make fixtures` plantent sur un état legacy `workflow_id` (hors-scope mail) — configurer la boîte via l'UI admin. @@ -45,6 +46,8 @@ - Navigation par dossiers (arbre récursif avec compteurs non-lus) - Liste paginée des messages (infinite scroll, cursor-based) - Lecture des corps de mail sanitisés (DOMPurify — protection XSS + pixels tracking) +- Décodage des en-têtes MIME encodés (RFC 2047, ex `=?UTF-8?Q?...`) sur sujet + nom d'expéditeur (`App\Mail\MimeHeaderDecoder`, appliqué dans `ImapMailProvider`) +- Aperçu inline des pièces jointes images + PDF (visionneuse modale plein écran), téléchargement pour les autres types - Création d'une tâche Lesstime depuis un mail (sujet → titre, texte → description) - Lien mail ↔ tâche (bidirectionnel) - Onglet "Mails" dans le TaskDrawer pour retrouver les mails liés à une tâche @@ -107,7 +110,7 @@ Tous les endpoints `/api/mail/*` refusent explicitement `ROLE_CLIENT`. ### Frontend - `frontend/pages/mail.vue` — page principale 3 colonnes -- `frontend/components/mail/` — MailFolderTree, MailMessageList, MailMessageViewer, MailRefreshButton +- `frontend/components/mail/` — MailFolderTree, MailMessageList, MailMessageViewer, MailRefreshButton, MailAttachmentPreview (visionneuse modale image/PDF) - `frontend/components/admin/AdminMailTab.vue` — onglet config admin - `frontend/stores/mail.ts` — store Pinia (folders, messages, polling) - `frontend/services/mail.ts` — service API (toutes les méthodes) diff --git a/frontend/components/mail/MailAttachmentPreview.vue b/frontend/components/mail/MailAttachmentPreview.vue new file mode 100644 index 0000000..dee9b3f --- /dev/null +++ b/frontend/components/mail/MailAttachmentPreview.vue @@ -0,0 +1,121 @@ + + + + + + + + + + + {{ filename }} + + + + + {{ t('mail.actions.download') }} + + + + + + + + + + + + {{ t('mail.preview.loading') }} + + + + + + + + + {{ t('mail.preview.unavailable') }} + + + + + + + + diff --git a/frontend/components/mail/MailMessageViewer.vue b/frontend/components/mail/MailMessageViewer.vue index 4f2c1cf..34467e1 100644 --- a/frontend/components/mail/MailMessageViewer.vue +++ b/frontend/components/mail/MailMessageViewer.vue @@ -1,5 +1,5 @@