Le compositeur de message d'Odoo est l'écran le plus utilisé de l'ERP et l'un des plus pauvres : pas de copie cachée, pas de transfert, pas d'annulation, et des modèles de courriel proposés sans discernement.
Dix-huit modules communautaires le ramènent au niveau d'un client de messagerie ordinaire — et ajoutent ce qu'un ERP peut faire de mieux.
Résumé
Quatre modules traitent les destinataires : la copie et la copie cachée dans le compositeur, avec valeurs par défaut par société et affichage sous la ligne « À » dans la conversation ; le transfert d'un message vers d'autres utilisateurs ; et un contact de redirection qui reçoit les notifications à la place d'un autre.
Quatre modules traitent l'envoi : l'envoi différé et annulable — le message part après un délai, ce qui laisse le temps de se rétracter —, une confirmation avant envoi, la restriction du bouton d'envoi par groupe de droits, et la réponse citée à un message précis.
Quatre modules traitent les modèles de courriel : le filtrage par domaine sur l'enregistrement courant, des règles de substitution remplaçant un modèle par un autre selon un domaine, un sujet personnalisé par modèle de données et sous-type, et la signature numérique de l'utilisateur.
Six modules enfin traitent les pièces jointes et la recherche : l'attachement d'une pièce existante à un message — avec son volet comptable —, le dépôt d'un courriel par glisser-déposer depuis le bureau, la recherche dans le contenu des messages, une recherche de message dédiée, et la simulation d'un courriel entrant pour tester un serveur de réception.
L'essentiel
- La copie et la copie cachée dans le compositeur, absentes du standard.
- Des destinataires en copie par défaut définis au niveau de la société.
- Le transfert d'un message depuis la conversation d'un document.
- L'envoi différé et annulable : quelques secondes pour se rétracter.
- Le bouton d'envoi restreint par groupe de droits.
- Les modèles de courriel filtrés selon l'enregistrement ouvert.
- Des règles de substitution entre modèles de courriel.
- Un courriel déposé par glisser-déposer depuis le bureau.
Ce que ces modules ajoutent à l'instance
| Famille | Modules | Nombre |
|---|---|---|
| Destinataires | mail_composer_cc_bcc, mail_composer_cc_bcc_mail_tracking, mail_forward, mail_partner_forwarding | 4 |
| Envoi | mail_post_defer, mail_send_confirmation, mail_restrict_send_button, mail_quoted_reply | 4 |
| Modèles | mail_template_domain, mail_template_substitute, mail_notification_custom_subject, base_user_signature | 4 |
| Pièces jointes | mail_attach_existing_attachment, mail_attach_existing_attachment_account, mail_drop_target | 3 |
| Recherche et test | base_search_mail_content, mail_message_search, fetchmail_incoming_test | 3 |
Un seul menu ajouté : Paramètres ▸ Technique ▸ E-mail ▸ Modèles de remplacement de sujet.
Les destinataires
L'absence de copie cachée dans le compositeur d'Odoo a une conséquence quotidienne : les équipes sortent de l'ERP pour envoyer un devis, parce qu'elles veulent mettre leur responsable en copie discrète. Le message part alors d'Outlook, et la trace n'existe plus dans le document.
mail_composer_cc_bcc ajoute les champs copie et copie cachée au compositeur, et les propage au message et au courriel envoyé. Deux champs de société définissent des destinataires en copie par défaut — l'adresse d'archivage comptable, par exemple. Le modèle de courriel et son aperçu reçoivent aussi un champ de copie cachée.
mail_composer_cc_bcc_mail_tracking complète l'affichage : les destinataires en copie apparaissent sous la ligne « À » dans la conversation, donc la trace est lisible sans ouvrir le message technique.
mail_forwardpermet de transférer un message de la conversation d'un document vers d'autres utilisateurs — le geste élémentaire qui manquait.mail_partner_forwardingajoute un contact de redirection : les notifications destinées à un contact partent à un autre. Utile quand un interlocuteur change, ou quand un service centralise la réception.
L'envoi : différé, confirmé, restreint
mail_post_defer (LGPL-3) rend les messages sortants plus rapides et annulables : l'envoi est différé, donc l'interface ne bloque pas, et le message peut être annulé pendant le délai.
Un délai de quelques secondes avant envoi est le seul mécanisme qui rattrape une erreur de destinataire. Une fois le message parti, aucun module ne le rappelle — et une relance envoyée au mauvais client coûte plus qu'une relance oubliée.
mail_send_confirmationdemande une confirmation avant envoi. Son README est minimal et il n'ajoute aucun champ : le comportement est à vérifier sur instance.mail_restrict_send_buttonrestreint le bouton d'envoi de la conversation par groupe de droits. C'est la réponse au stagiaire qui peut écrire au client depuis une facture.mail_quoted_replypermet de répondre en citant un message précis de la conversation, au lieu d'écrire un nouveau message sans contexte.
Les modèles de courriel
mail_template_domain ajoute au modèle de courriel deux champs — restreindre ? et domaine de restriction — et filtre les modèles proposés dans le compositeur selon l'enregistrement ouvert. Un modèle de relance de deuxième niveau ne doit pas être proposé sur une facture non échue.
mail_template_substitute crée un modèle de règle de substitution : un modèle de courriel, un domaine, une séquence, et le modèle de remplacement. Le modèle demandé est remplacé automatiquement quand le domaine correspond.
Le cas d'usage est le multi-société ou le multi-marque : un même flux appelle le gabarit standard, et la règle y substitue le gabarit de la filiale concernée. Sans cela, il faut dupliquer le flux.
mail_notification_custom_subjectcrée un référentiel de remplacement de sujet : par modèle de données et par sous-type de message, avec un gabarit de sujet, un texte à remplacer et une position. Accessible sous Paramètres ▸ Technique ▸ E-mail ▸ Modèles de remplacement de sujet.base_user_signatureajoute une signature numérique à l'utilisateur, reprise dans ses envois.
Le sujet d'une notification Odoo est le point le plus visible et le moins soigné : « Re: SO12345 » dans la boîte d'un client ne lui apprend rien. Le remplacer par le nom de l'entreprise et le numéro de commande coûte une ligne de configuration.
Les pièces jointes et la recherche
mail_attach_existing_attachmentpermet d'attacher à un message une pièce déjà présente sur le document, au lieu de la téléverser à nouveau.mail_attach_existing_attachment_accountétend ce geste aux documents comptables.mail_drop_targetpermet d'attacher un courriel à Odoo par glisser-déposer depuis le bureau. C'est le pont le plus simple entre une messagerie locale et l'ERP : pas de connecteur, pas de synchronisation, un fichier déposé sur le document.base_search_mail_contentajoute un champ de recherche contenu du message sur tous les modèles porteurs d'une conversation — facture, piste, employé, véhicule. Il s'appuie sur la recherche approchée (base_search_fuzzy), donc sur l'extension PostgreSQL correspondante.mail_message_searchajoute un champ de recherche de message sur les mixins de conversation et les modèles de publipostage.fetchmail_incoming_testpermet de simuler un courriel entrant depuis la fiche du serveur de réception. C'est l'outil qui manque pour mettre au point un alias de création de tickets ou de pistes sans envoyer de vrais messages.
Retrouver un document par le contenu d'un échange est la recherche que les utilisateurs tentent spontanément et qu'aucun ERP ne propose. « La facture où le client parlait d'un retard de livraison » existe dans leur tête, pas dans un filtre.
Limites connues
- Quatre modules ont un README minimal :
base_search_mail_content,base_user_signature,mail_message_searchetmail_send_confirmation. Les trois premiers ont des champs relevés ; le dernier n'en a aucun. base_search_mail_contentexige la recherche approchée, donc une extension PostgreSQL à installer côté serveur — impossible sur un hébergement qui ne la fournit pas.- La recherche dans le contenu des messages est coûteuse sur une base ancienne : la table des messages est souvent la plus volumineuse.
- La copie cachée reste une copie cachée : elle apparaît dans la conversation du document pour qui y a accès, donc elle n'est discrète que vis-à-vis du destinataire.
- L'envoi différé change le moment de l'échec : une erreur SMTP se découvre après coup, dans la file, et non à l'écran.
- Les règles de substitution de modèle sont silencieuses : un utilisateur qui choisit un gabarit et en voit partir un autre n'a aucun indice.
mail_drop_targetdépend du navigateur et du client de messagerie : le format du fichier déposé varie.
Identité technique
Les dix-huit modules viennent du dépôt OCA mail, branche 18.0 — dont les 46 modules sont désormais tous documentés ici. Ils sont en licence AGPL-3, sauf mail_post_defer, en LGPL-3. Les dépendances notables : base_search_fuzzy pour la recherche dans les messages, account pour les pièces jointes comptables et les substitutions de modèle, contacts pour le transfert.
Les deux autres fiches du dépôt : savoir si vos e-mails arrivent et activités, abonnés et notifications.
Questions fréquentes
Odoo permet-il la copie cachée dans ses e-mails ?
Pas en standard. mail_composer_cc_bcc ajoute la copie et la copie cachée au compositeur, les propage au courriel envoyé, et permet des destinataires par défaut au niveau société. Sans ce module, les équipes sortent de l'ERP pour envoyer un devis — et la trace disparaît du document.
Peut-on annuler un e-mail qui vient de partir d'Odoo ?
Avec mail_post_defer (LGPL-3), l'envoi est différé et annulable pendant le délai. C'est le seul mécanisme qui rattrape une erreur de destinataire : une fois le message parti, aucun module ne le rappelle. En contrepartie, une erreur SMTP se découvre après coup, dans la file.
Comment empêcher certains utilisateurs d'écrire au client depuis un document ?
mail_restrict_send_button restreint le bouton d'envoi de la conversation par groupe de droits. À combiner avec mail_suggested_recipient_unchecked, qui décoche les destinataires suggérés, pour que l'envoi externe devienne un geste volontaire et autorisé.
Peut-on retrouver un document par le contenu des échanges qu'il contient ?
Oui : base_search_mail_content ajoute un champ de recherche contenu du message sur tous les modèles porteurs d'une conversation. Il exige la recherche approchée base_search_fuzzy, donc une extension PostgreSQL — et reste coûteux sur une base ancienne, où la table des messages est la plus volumineuse.
Comment tester un alias de création de tickets sans envoyer de vrais e-mails ?
fetchmail_incoming_test permet de simuler un courriel entrant depuis la fiche du serveur de réception. C'est l'outil qui manque pour mettre au point un alias de création de tickets ou de pistes, et vérifier le routage avant d'ouvrir le service.
Se faire accompagner
Le compositeur de message est l'écran le plus utilisé d'un ERP, et c'est celui qu'on ne regarde jamais en projet. Résultat : les équipes écrivent depuis leur messagerie personnelle pour avoir une copie cachée, et l'historique client se vide pendant que l'ERP affiche un beau tableau de bord.
Nous commençons donc par rendre l'écran d'envoi utilisable — copie, copie cachée, transfert, délai d'annulation — avant d'automatiser quoi que ce soit. Un historique complet vaut mieux qu'un flux automatique que personne n'emploie. Voir les prestations d'Atalios Consulting ou demander un rappel.
Pour aller plus loin
En résumé
Le compositeur de message d'Odoo ramené au niveau d'un client de messagerie : copie et copie cachée, transfert, envoi différé annulable, modèles filtrés selon le document ouvert, et un courriel attaché par glisser-déposer. Parlons de vos échanges clients.