Documentation10 min de lecture

Écrire depuis Odoo : copie cachée, transfert, pièces jointes et modèles

Le module OCA `mail_composer_cc_bcc` (dépôt `mail`, version 18.0.1.0.3, licence AGPL-3) ajoute la **copie** et la **copie cachée** au compositeur de message d'Odoo, les propage jusqu'au courriel envoyé, et permet de définir des **destinataires en copie par défaut au niveau de la société**. Dix-sept autres modules traitent le transfert, l'envoi différé, les pièces jointes et les modèles de courriel.

Rédaction d'un message sur un ordinateur portable

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

FamilleModulesNombre
Destinatairesmail_composer_cc_bcc, mail_composer_cc_bcc_mail_tracking, mail_forward, mail_partner_forwarding4
Envoimail_post_defer, mail_send_confirmation, mail_restrict_send_button, mail_quoted_reply4
Modèlesmail_template_domain, mail_template_substitute, mail_notification_custom_subject, base_user_signature4
Pièces jointesmail_attach_existing_attachment, mail_attach_existing_attachment_account, mail_drop_target3
Recherche et testbase_search_mail_content, mail_message_search, fetchmail_incoming_test3

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_forward permet de transférer un message de la conversation d'un document vers d'autres utilisateurs — le geste élémentaire qui manquait.
  • mail_partner_forwarding ajoute 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_confirmation demande une confirmation avant envoi. Son README est minimal et il n'ajoute aucun champ : le comportement est à vérifier sur instance.
  • mail_restrict_send_button restreint 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_reply permet 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_subject cré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_signature ajoute 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_attachment permet 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_target permet 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_content ajoute 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_search ajoute un champ de recherche de message sur les mixins de conversation et les modèles de publipostage.
  • 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 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_search et mail_send_confirmation. Les trois premiers ont des champs relevés ; le dernier n'en a aucun.
  • base_search_mail_content exige 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_target dé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.

Documentation OCAOdoo CommunityMessagerie

Partager

Fiches connexes

Équipe au travail sur des ordinateurs portables autour d'une table
Le module OCA `account_invoice_en16931` (dépôt `fr-einvoicing`, version 18.0.1.0.0, licence AGPL-3) est le socle qui fabrique le fichier de facture électronique conforme à la norme européenne **EN 16931** : Factur-X (PDF/A-3 avec XML CII embarqué), XML UBL, XML CII ou PDF accompagné d'un UBL — et il ajoute des **contrôles bloquants à la validation** d'une facture client. Les quatre modules qui s'y greffent pour la France, et ce que le socle ne fait pas.
Lire la suite
Documentation OCA, Facturation électronique
Réunion d'approbation autour d'un document de travail
Relevé sur une instance Odoo 18 Community, le module OCA `base_tier_validation` (dépôt `server-ux`, version 18.0.3.5.1, licence AGPL-3) ajoute 1 modèle, 101 champs et 3 menus, mais ne s'active sur aucun document métier par lui-même : il lui faut un module d'implémentation. C'est le point qui surprend le plus — voici ce qu'il fait réellement, et comment le mettre en service.
Lire la suite
Documentation OCA, Odoo