Client Webmail

Un client webmail complet intégré directement dans le panneau d'administration Larapen. Connectez n'importe quel compte e-mail IMAP/SMTP et lisez, composez, répondez, transférez et gérez vos messages sans quitter votre tableau de bord.

IMAP & SMTP

Connectez n'importe quel fournisseur de messagerie standard : Gmail, Outlook, serveurs de messagerie personnalisés : via IMAP pour la lecture et SMTP pour l'envoi.

Multi-comptes

Chaque utilisateur administrateur peut ajouter plusieurs comptes e-mail, définir un compte par défaut et basculer entre eux dans la vue de la boîte de réception.

Composer & Répondre

Support complet de la composition, réponse, réponse à tous et transfert avec pièces jointes et signatures par compte.

Cache local

Cache de messages optionnel en base de données pour un chargement plus rapide. Seuls les nouveaux messages sont récupérés de manière incrémentielle depuis le serveur.

Gestion des dossiers

Découverte et synchronisation automatiques des dossiers. Boîte de réception, Envoyés, Brouillons, Corbeille, Spam, Archives et dossiers personnalisés sont tous pris en charge.

Recherche plein texte

Recherchez les messages par sujet et contenu du corps en utilisant l'indexation FULLTEXT de MySQL lorsque le cache local est activé.

Cas d'utilisation

Administrateur de site

Vous gérez un site Larapen et souhaitez lire et répondre aux e-mails (demandes de support, notifications de formulaires de contact) sans basculer vers un client de messagerie séparé.

  • Ajoutez votre compte e-mail professionnel (ex. admin@votresite.com).
  • Lisez les messages entrants dans la boîte de réception du panneau d'administration.
  • Répondez directement depuis le tableau de bord avec votre signature e-mail.

Comptes d'équipe multiples

Chaque utilisateur administrateur gère son ou ses propres comptes e-mail. Un responsable du support peut ajouter à la fois support@entreprise.com et facturation@entreprise.com, en basculant entre eux selon les besoins.

Communication centralisée

Gardez toute la communication liée au site visible au même endroit. Transférez les e-mails importants, composez des messages de prospection et gérez la correspondance avec les clients : le tout depuis le panneau d'administration.

Prérequis

  • Larapen CMS v1.0.0 ou ultérieur
  • PHP 8.3+ avec l'extension imap activée
  • MySQL 8.0+ (requis pour l'indexation FULLTEXT sur la table des messages)
  • Le package Composer webklex/php-imap (inclus avec l'add-on)
  • Un compte e-mail avec accès IMAP et SMTP
Aucune dépendance envers d'autres add-ons. Le Client Webmail est entièrement autonome et fonctionne indépendamment de tout autre add-on Larapen.

Installation

Étape 1 : Placer l'add-on

Copiez ou créez un lien symbolique du dossier webmail dans le répertoire "extensions/addons" de votre Larapen :

Étape 2 : Activer l'add-on

Allez dans Admin → Add-ons → Add-ons installés et activez Client Webmail.

Étape 3 : Exécuter les migrations

Cela crée 5 tables : webmail_accounts, webmail_folders, webmail_identities, webmail_messages et webmail_attachments.

Étape 4 : Définir les permissions

L'add-on enregistre 12 permissions (voir Permissions). Attribuez-les aux rôles d'administration via Admin → Utilisateurs → Rôles & Permissions.

Étape 5 : Ajouter un compte e-mail

Naviguez vers Admin → Webmail → Comptes et cliquez sur Ajouter un compte. Entrez les détails de votre serveur IMAP et SMTP. Utilisez le bouton Tester la connexion pour vérifier avant d'enregistrer. Voir Comptes.

Configuration

Les paramètres globaux sont gérés dans Admin → Webmail → Paramètres. Le fichier de configuration est config/webmail.php et les valeurs peuvent être remplacées depuis le panneau d'administration (stockées dans la table settings, groupe webmail).

Paramètre Description Défaut
local_cache Lorsqu'activé, les messages sont stockés dans la base de données locale pour un chargement plus rapide. Seuls les nouveaux messages sont récupérés de manière incrémentielle depuis le serveur IMAP. false
messages_per_page Nombre de messages affichés par page dans la vue de la boîte aux lettres. 25
auto_refresh_interval Intervalle de rafraîchissement automatique en secondes. Définissez à 0 pour désactiver le rafraîchissement automatique. 0
max_attachment_size Taille maximale des pièces jointes en Ko. Par défaut 25 Mo (25600 Ko). 25600
attachment_preview Lorsqu'activé, les pièces jointes prévisualisables (images, PDF) sont ouvertes directement dans le navigateur au lieu de forcer un téléchargement. true
html_display_mode Mode de rendu des e-mails HTML : iframe (isolé) ou text (texte brut uniquement). iframe
date_format Chaîne de format PHP date() utilisée pour afficher les dates des messages. M j, g:i A
default_imap_port Port IMAP par défaut pré-rempli lors de la création d'un nouveau compte. 993
default_imap_encryption Chiffrement IMAP par défaut pré-rempli lors de la création d'un nouveau compte. ssl
default_smtp_port Port SMTP par défaut pré-rempli lors de la création d'un nouveau compte. 465
default_smtp_encryption Chiffrement SMTP par défaut pré-rempli lors de la création d'un nouveau compte. ssl

Gestion des comptes

Chaque utilisateur administrateur gère ses propres comptes e-mail. Les comptes sont liés à l'utilisateur authentifié : un utilisateur ne peut ni voir ni modifier les comptes d'un autre utilisateur.

Ajouter un compte

Naviguez vers Admin → Webmail → Comptes → Ajouter un compte. Le formulaire requiert :

Champ Requis Description
name Oui Nom d'affichage du compte (ex. « E-mail professionnel »).
email Oui Adresse e-mail. Doit être unique par utilisateur.
imap_host Oui Nom d'hôte du serveur IMAP (ex. imap.gmail.com).
imap_port Oui Port IMAP (généralement 993 pour SSL, 143 pour STARTTLS).
imap_encryption Oui Chiffrement : ssl, tls, starttls ou none.
imap_username Oui Nom d'utilisateur IMAP (généralement l'adresse e-mail).
imap_password Oui Mot de passe IMAP. Chiffré avant le stockage.
imap_validate_cert Non Valider le certificat SSL. Par défaut : true. Désactivez pour les certificats auto-signés.
smtp_host Oui Nom d'hôte du serveur SMTP (ex. smtp.gmail.com).
smtp_port Oui Port SMTP (généralement 465 pour SSL, 587 pour STARTTLS).
smtp_encryption Oui Chiffrement : ssl, tls, starttls ou none.
smtp_username Non Nom d'utilisateur SMTP. Utilise le nom d'utilisateur IMAP par défaut si vide.
smtp_password Non Mot de passe SMTP. Utilise le mot de passe IMAP par défaut si vide. Chiffré avant le stockage.
signature Non Signature e-mail HTML ajoutée aux messages sortants. Maximum 10 000 caractères.
is_active Non Activer ou désactiver le compte. Par défaut : true.
is_default Non Définir comme compte par défaut. Un seul compte par utilisateur peut être par défaut.
Sécurité des identifiants : Tous les mots de passe IMAP et SMTP sont chiffrés avec la facade Crypt de Laravel avant d'être stockés en base de données. Ils ne sont déchiffrés que lors de l'établissement d'une connexion au serveur de messagerie.

Paramètres IMAP & SMTP courants

Fournisseur Hôte IMAP Port IMAP Hôte SMTP Port SMTP Chiffrement
Gmail imap.gmail.com 993 smtp.gmail.com 465 SSL
Outlook / Microsoft 365 outlook.office365.com 993 smtp.office365.com 587 STARTTLS
Yahoo Mail imap.mail.yahoo.com 993 smtp.mail.yahoo.com 465 SSL
Personnalisé / cPanel mail.votredomaine.com 993 mail.votredomaine.com 465 SSL
Utilisateurs Gmail : Vous devez utiliser un mot de passe d'application (et non votre mot de passe Google habituel) si l'authentification à deux facteurs est activée. Générez-en un à myaccount.google.com → Sécurité → Mots de passe d'application.

Tester la connexion

Cliquez sur le bouton Tester la connexion dans le formulaire de compte pour vérifier la connectivité IMAP avant d'enregistrer. Le test tente de se connecter au serveur IMAP avec les identifiants fournis et retourne un message de succès ou d'erreur. Il s'agit d'une requête AJAX : aucun rechargement de page nécessaire.

Boîte de réception & Dossiers

La vue principale de la boîte aux lettres est accessible dans Admin → Webmail → Boîte de réception. Elle affiche la liste des messages pour le compte et le dossier sélectionnés.

Changement de compte

Si un utilisateur possède plusieurs comptes, un menu déroulant permet de basculer entre eux. Le compte par défaut est sélectionné automatiquement au premier chargement.

Navigation dans les dossiers

Les dossiers sont synchronisés automatiquement depuis le serveur IMAP. L'add-on détecte les types de dossiers standards :

  • Boîte de réception : messages entrants
  • Envoyés : messages envoyés
  • Brouillons : brouillons de messages
  • Corbeille : messages supprimés
  • Spam : messages indésirables
  • Archives : messages archivés
  • Personnalisé : tout autre dossier créé par l'utilisateur

La détection du type de dossier gère les conventions de nommage de Gmail, Outlook et IMAP standard. Chaque dossier affiche le nombre total de messages et le nombre de messages non lus.

Rafraîchissement des dossiers

Cliquez sur le bouton Rafraîchir pour resynchroniser les dossiers depuis le serveur IMAP. Cela met à jour les listes de dossiers, les compteurs de messages et (lorsque le cache local est activé) télécharge les nouveaux messages.

Lecture des messages

Cliquez sur n'importe quel message dans la liste pour afficher son contenu complet. La vue de détail du message affiche :

  • Adresses De, À, CC, CCI
  • Sujet et date
  • Corps HTML (rendu dans un iframe isolé) ou corps en texte brut
  • Liste des pièces jointes avec liens de téléchargement
  • Boutons d'action rapide : Répondre, Répondre à tous, Transférer, Supprimer
Sécurité HTML : Lorsque html_display_mode est défini sur iframe, les e-mails HTML sont rendus à l'intérieur d'un <iframe> isolé pour prévenir les attaques XSS. Définissez-le sur text pour n'afficher que la version texte brut des messages.

Utilisez la barre de recherche pour trouver des messages dans le dossier actuel. Lorsque le cache local est activé, la recherche utilise l'indexation FULLTEXT de MySQL sur les colonnes subject et text_body, ainsi que la recherche JSON sur les champs d'adresses. Lorsque le cache est désactivé, la recherche interroge directement le serveur IMAP.

Actions sur les messages

Les actions suivantes sont disponibles via AJAX (sans rechargement de page) :

Action Description
Marquer comme lu Marquer le message comme lu sur le serveur IMAP.
Marquer comme non lu Marquer le message comme non lu sur le serveur IMAP.
Suivre Marquer/suivre le message avec un drapeau.
Ne plus suivre Retirer le drapeau/suivi du message.
Supprimer Supprimer définitivement le message du serveur.
Déplacer vers la corbeille Déplacer le message dans le dossier Corbeille.
Déplacer Déplacer le message vers un autre dossier.
Spam Déplacer le message dans le dossier Spam.

Composer & Répondre

Nouveau message

Naviguez vers Admin → Webmail → Composer pour créer un nouvel e-mail. Sélectionnez le compte d'envoi (si vous en avez plusieurs), remplissez les champs À, CC et CCI, saisissez un sujet et le corps du message, puis cliquez sur Envoyer.

  • Plusieurs destinataires peuvent être saisis sous forme d'adresses séparées par des virgules.
  • Les champs CC et CCI sont masqués par défaut et peuvent être dépliés via des liens de bascule.
  • La signature du compte est ajoutée automatiquement si elle est configurée.

Répondre & Transférer

Depuis la vue de détail du message, cliquez sur Répondre, Répondre à tous ou Transférer pour ouvrir le formulaire de composition pré-rempli avec :

  • Répondre : champ À défini sur l'expéditeur original. Sujet préfixé par Re:. Message original cité.
  • Répondre à tous : champ À défini sur l'expéditeur original plus tous les destinataires CC. Sujet préfixé par Re:.
  • Transférer : champ À laissé vide. Sujet préfixé par Fwd:. Message original cité avec un bloc d'en-tête de transfert.

Le format de citation utilise le modèle : « Le [date], [expéditeur] a écrit : » suivi du corps du message original.

Pièces jointes

Les messages sortants prennent en charge les pièces jointes. La taille maximale des pièces jointes est contrôlée par le paramètre max_attachment_size (par défaut : 25 Mo). Les pièces jointes prévisualisables (images, PDF) peuvent être ouvertes directement dans le navigateur lorsque attachment_preview est activé.

Pour télécharger une pièce jointe d'un message reçu, cliquez sur le nom de la pièce jointe dans la vue de détail du message. Les pièces jointes sont récupérées directement depuis le serveur IMAP à la demande.

Paramètres

Naviguez vers Admin → Webmail → Paramètres pour configurer l'add-on. Les paramètres sont organisés en sections :

Affichage

  • Messages par page : nombre de messages affichés par page dans la boîte aux lettres.
  • Mode d'affichage HTML : iframe (isolé, recommandé) ou text (texte brut uniquement).
  • Format de date : format de date PHP pour les horodatages des messages.
  • Aperçu des pièces jointes : ouvrir les images/PDF directement ou forcer le téléchargement.
  • Taille maximale des pièces jointes : taille maximale des fichiers pour les pièces jointes sortantes (en Ko).

Performance

  • Cache local : activer le cache de messages en base de données pour un chargement plus rapide.
  • Intervalle de rafraîchissement automatique : rafraîchissement automatique de la boîte aux lettres en secondes. Définissez à 0 pour désactiver, ou choisissez des intervalles comme « au focus de l'onglet », 30 secondes, 1 minute, etc.

Mise à jour

Étape 1 : Remplacer les fichiers

Remplacez le répertoire de l'add-on par la nouvelle version.

Étape 2 : Exécuter les migrations

Étape 3 : Vider les caches

Étape 4 : Vérifier

Visitez Webmail → Comptes et vérifiez que vos comptes sont toujours listés et opérationnels. Cliquez sur Tester la connexion sur un compte pour confirmer la connectivité.

Sauvegarde préalable : Sauvegardez toujours votre base de données avant d'exécuter des migrations sur un système de production.

Dépannage

Le test de connexion échoue : « Could not connect to IMAP server »

Vérifiez que :

  • L'hôte et le port IMAP sont corrects pour votre fournisseur de messagerie.
  • Le type de chiffrement correspond au port (SSL pour 993, STARTTLS pour 143).
  • Le nom d'utilisateur et le mot de passe sont corrects. Pour Gmail, utilisez un mot de passe d'application si l'authentification à deux facteurs est activée.
  • Le pare-feu de votre serveur autorise les connexions sortantes sur le port IMAP.
  • Si vous utilisez un certificat auto-signé, désactivez imap_validate_cert.

Les messages ne se chargent pas : boîte de réception vide

  • Cliquez sur Rafraîchir pour forcer une synchronisation des dossiers.
  • Vérifiez que le compte est marqué comme Actif.
  • Consultez la colonne connection_error dans webmail_accounts pour les messages d'erreur stockés.
  • Vérifiez que le serveur IMAP autorise la connexion (certains fournisseurs nécessitent d'activer « l'accès IMAP » dans leurs paramètres).

L'envoi d'e-mail échoue : « Send failed »

  • Vérifiez les paramètres d'hôte, de port et de chiffrement SMTP.
  • Si le nom d'utilisateur/mot de passe SMTP est laissé vide, le système utilise les identifiants IMAP par défaut : assurez-vous qu'ils fonctionnent aussi pour le SMTP.
  • Vérifiez les logs du serveur (storage/logs/laravel.log) pour le message d'erreur SMTP spécifique.
  • Certains fournisseurs (ex. Gmail) nécessitent d'autoriser les « applications moins sécurisées » ou d'utiliser des mots de passe d'application.

La synchronisation des dossiers affiche des types de dossiers incorrects

L'add-on utilise une détection heuristique pour identifier les types de dossiers. Si un dossier est incorrectement catégorisé (ex. votre dossier « Envoyés » apparaît comme « personnalisé »), vérifiez que :

  • Le nom du dossier suit les conventions IMAP standard de votre fournisseur.
  • Les dossiers Gmail utilisent le préfixe [Gmail]/ (ex. [Gmail]/Sent Mail).
  • La méthode resolveCanonicalFolders() gère les types en double en sélectionnant le plus approprié.

Le cache local ne se met pas à jour

  • Assurez-vous que local_cache est défini sur true dans Webmail → Paramètres.
  • Vérifiez la colonne uid_validity dans webmail_folders. Si elle a changé sur le serveur, le cache est automatiquement purgé et resynchronisé lors du prochain accès.
  • Essayez de cliquer sur Rafraîchir pour déclencher une synchronisation incrémentielle.
  • Pour les problèmes persistants, videz manuellement le cache en tronquant la table webmail_messages pour le dossier concerné et en réinitialisant last_synced_uid à 0.

Les pièces jointes ne se téléchargent pas

  • Les pièces jointes sont récupérées directement depuis le serveur IMAP à la demande : elles ne sont pas stockées localement. Assurez-vous que la connexion IMAP est active.
  • Si l'index de la pièce jointe est incorrect, le téléchargement échouera. Cela peut se produire si la structure du message a changé sur le serveur.
  • Vérifiez le paramètre max_attachment_size : il s'applique aux pièces jointes sortantes, pas aux téléchargements.

La recherche ne retourne aucun résultat

  • Lorsque le cache local est désactivé, la recherche interroge directement le serveur IMAP. Certains serveurs IMAP ont des capacités de recherche limitées.
  • Lorsque le cache local est activé, la recherche utilise le FULLTEXT MySQL. Les termes de recherche courts (moins de 3-4 caractères, selon le ft_min_word_len de MySQL) peuvent ne pas retourner de résultats.
  • Assurez-vous que les messages ont été synchronisés dans le cache local avant de rechercher.

Le compte par défaut ne persiste pas

Le WebmailAccountObserver garantit qu'un seul compte par utilisateur peut être défini par défaut. Lors de la définition d'un nouveau compte par défaut, tous les autres comptes de cet utilisateur sont automatiquement désactivés comme défaut. Si aucun compte par défaut n'est explicitement défini, le premier compte actif est utilisé comme solution de repli.

Cet article vous a-t-il été utile ?

Merci pour votre retour !

Besoin d'aide ? Créez un ticket de support

Créer un Ticket