En vous promenant sur Beamreactor, nous stockons votre IP 48h pour des raisons de sécurité.

Lecteur Markdown

mailbox Documentation › MAILBOX_DOCUMENTATION

Mailbox Documentation

Mailbox — Client email IMAP/POP3 intégré #

Description #

Supporte les connexions IMAP et POP3 via l'extension PHP imap_open. Chaque utilisateur peut configurer plusieurs comptes email et basculer entre eux.

Prérequis #

  • Extension PHP ext-imap activée
  • jQuery UI (dialogs, autocomplete, draggable, droppable)
  • jQuery DataTables
  • Table SQL mailer-daemon

Fonctionnalités #

Gestion des comptes #

  • Comptes multiples par utilisateur, stockés en BDD (mailer-daemon)
  • Sélecteur de compte actif dans l'interface (session via Sessions::set)
  • Configuration par compte : serveur, port, type de connexion, identifiant, mot de passe, signature
  • Types de connexion supportés : POP3/SSL, IMAP/SSL, POP3/SSL (no validate), IMAP/SSL (no validate), POP3/SSL/TLS, IMAP/SSL/TLS
  • Suppression de compte

Consultation des emails #

  • Liste paginée via DataTables avec chargement AJAX (mailbox.mod&list=1)
  • Colonnes : statut lu/non lu, expéditeur, objet (avec compteur de messages et taille totale), pièces jointes, date, taille
  • Ouverture d'un email dans un dialog jQuery UI modal (75% de largeur)
  • Affichage des headers complets : De, À, CC, Date, Sujet
  • Téléchargement des pièces jointes via mailbox.mod&act=download
  • Sélection individuelle, multiple (Ctrl/Shift), ou globale (checkbox header)

Composition et réponse #

  • Composition d'un nouvel email (openComposeDialog('compose'))
  • Réponse avec pré-remplissage du destinataire, sujet (RE:), contenu original et date (openComposeDialog('reply'))
  • Transfert avec sujet (FW:), contenu original et date (openComposeDialog('forward'))
  • Autocomplétion des contacts sur le champ destinataire (mailbox.mod&act=get_contacts)
  • Contenu email encodé en base64 pour le transit (fonctions utf8_to_b64 / b64_to_utf8)

Gestion des dossiers IMAP #

  • Sidebar avec liste des dossiers chargée dynamiquement (mailbox.mod&act=list_folders)
  • Création de dossier (mailbox.mod&act=create_folder)
  • Suppression de dossier (mailbox.mod&act=delete_folder) avec fallback sur INBOX
  • Le dossier INBOX ne peut être ni supprimé ni renommé
  • Changement de dossier au clic : recharge la DataTable avec la nouvelle source

Drag & drop #

  • Les emails (première colonne) sont draggables vers les dossiers de la sidebar
  • Helper visuel affichant le nombre de mails déplacés
  • Les dossiers sont droppables avec feedback visuel (classe folder-hover)
  • Déplacement effectif via mailbox.mod&act=move_emails avec UIDs IMAP

Suppression #

  • Suppression des emails sélectionnés via mailbox.mod&act=DELETE
  • Confirmation par confirmWindow avec compteur d'emails sélectionnés
  • Extraction des UIDs IMAP depuis le DT_RowId (format : msgno-uid-imapuid)

Architecture #

Fichiers #

text
/plugins/mailbox/
├── mailbox.php				  # Interface principale
├── /conf/
│   └── mailbox.conf.inc.php	 # Configuration
├── /doc/
│   └── mailbox.md			   # Cette documentation
├── /lib/
│   └── mailbox.lib.inc.php	  # Bibliothèque (fonctions IMAP)
├── /locale/
│   ├── mailbox.en.inc.php
│   └── mailbox.fr.inc.php
├── /handlers/
│   └── mailbox.mod.php		  # Endpoint AJAX
├── /css/
│   └── mailbox.css
├── /js/
│   └── mailbox.js			   # Logique frontend
├── /images/
│   ├── read.gif
│   ├── unread.gif
│   ├── paperclip.gif
│   ├── small_pen.png
│   ├── small_papers.png
│   ├── small_cogs.png
│   ├── trash.png
│   └── /ui/
│	   └── attachment.png
└── /sql/
	└── mailbox.sql

Endpoints AJAX (mailbox.mod) #

| Action | Méthode | Description |

|-------------------|---------|------------------------------------------|

| list=1 | GET | Liste des emails (DataTables JSON) |

| act=read | POST | Lecture d'un email (headers, body, pièces jointes) |

| act=reply | POST | Formulaire de réponse/composition |

| act=download | GET | Téléchargement d'une pièce jointe |

| act=DELETE | POST | Suppression d'emails par UIDs |

| act=config | POST | Sauvegarde de la configuration compte |

| act=list_folders| GET | Liste des dossiers IMAP |

| act=create_folder| POST | Création d'un dossier |

| act=rename_folder| POST | Renommage d'un dossier |

| act=delete_folder| POST | Suppression d'un dossier |

| act=move_emails | POST | Déplacement d'emails entre dossiers |

| act=get_contacts| GET | Autocomplétion des contacts |

Format DT_RowId #

text
{msgno}-{uid}-{imap_uid}

Le troisième segment est l'UID IMAP réel, utilisé pour toutes les opérations (lecture, suppression, déplacement). Extraction via getRealImapUidFromRowId().

Traductions JavaScript #

Passées via setJavascriptLocale() dans le namespace PLUGIN_TRANSLATION.mailbox. Clés utilisées : error, compose, reply, forward, attention, no_selection, areyousure, emails, emailids, move, success.

Sécurité #

  • Chaque requête SQL vérifie owner_user_id pour isoler les comptes par utilisateur
  • Adresses email encodées en base64 dans le transit JSON (source_address, reply_addresses)
  • Formulaire de configuration avec double saisie du mot de passe
  • Validation côté client via validerFormulaire() avant soumission AJAX

Dépendances externes #

  • jQuery UI : dialogs, autocomplete, draggable, droppable
  • jQuery DataTables : liste des emails paginée
  • javascript/dialogs.js : alertWindow, confirmWindow, promptWindow, infoWindow, errorWindow

Notes #

  • La variable globale currentFolder (défaut : INBOX) détermine le dossier actif pour toutes les opérations
  • BEAM_MAILS_PER_PAGE est injectée depuis PHP via $headdata
  • Le loadFolders() est déclenché avec un setTimeout de 500ms pour laisser DataTables s'initialiser
  • La fonction br_do_bytes() affiche les tailles en notation unicode superscript (ᴷᴮ, ᴹᴮ, ᴳᴮ, ᵀᴮ)

Changelog #

  • 0.91.2 (2026-01-18) : Comptes multiples, gestion des dossiers IMAP, drag & drop, transfert d'emails, renommage/suppression de dossiers
  • 0.x (2002–2025) : Évolutions progressives depuis le client email original
de en fr