Jump to content

Extension:ContactManager

From mediawiki.org
This page is a translated version of the page Extension:ContactManager and the translation is 100% complete.
Manuel des extensions MediaWiki
ContactManager
État de la version : stable
Implémentation Accroche , Page spéciale
Description logiciel complet de courriel sur le web, de gestionnaire de contacts et de démarchage par courriel pour MediaWiki basé sur VisualData
Auteur(s) thomas-topway-it (thomas-topway-itdiscussion)
Dernière version 1.3.1 (2025-10-19)
MediaWiki 1.35.3+
  • $wgContactManagerSchemasMailbox
  • $wgContactManagerSchemasJobDeleteOldRevisions
  • $wgContactManagerSchemasConversation
  • $wgContactManagerSchemasJobMailboxInfo
  • $wgContactManagerSchemasComposeEmail
  • $wgContactManagerMessagePagenameFormula
  • $wgContactManagerMainJobsArticle
  • $wgContactManagerSchemasMailboxFolders
  • $wgContactManagerSchemasMailboxInfo
  • $wgContactManagerSchemasMessage
  • $wgContactManagerFetchedMessagesPagenameFormula
  • $wgContactManagerOverviewPagenameFormula
  • $wgContactManagerSchemasMessageFilter
  • $wgContactManagerSchemasJobRetrieveMessages
  • $wgContactManagerSchemasMailer
  • $wgContactManagerSchemasFetchedMessages
  • $wgContactManagerMailboxArticle
  • $wgContactManangerDisableSidebarLink
  • $wgContactManagerSchemasMessageOverview
  • $wgContactManagerAttachmentsFolder
  • $wgContactManagerConversationPagenameFormula
  • $wgContactManagerContactPagenameFormula
  • $wgContactManagerMailboxArticleJobs
  • $wgContactManagerSchemasContact
  • $wgContactManagerAllMessagesPagenameFormula
  • $wgContactManangerConsiderJobDeadMinutes
  • $wgContactManagerDebugPath
  • $wgContactManagerSchemasJobGetFolders
  • contactmanager-can-manage-mailboxes
  • contactmanager-can-browse-tracking
Licence Licence publique générale GNU v2.0 ou ultérieur
Téléchargement
Exemple demo
Traduire l’extension ContactManager sur translatewiki.net si elle y est disponible
Problèmes Tâches ouvertes · Signaler un bogue

ContactManager est un logiciel de courriel sur le web complète basé sur MediaWiki et VisualData . Grâce à la flexibilité de MediaWiki, la puissance de json-schema et la modularité de VisualData, cela permet aussi de l'utiliser en tant que gestionnaire de contacts (d'où son nom), ainsi que logiciel de démarchage par courriel, simlilaire à Mailchimp ou à MailUP.

Fonctionnalités clé:

  • plusieurs boîtes à lettres possibles (IMAP et SMTP)
  • prise en charge de tous les critères de recherche IMAP
  • filtres du courriel (reconnait toutes les métadonnées du courriel)
  • prend en charge les pièces jointes hors et intra bande
  • agents courriel (mailers) multiples (tous les agents pris en charge par Symfony sont reconnus : smtp, sendmail, native, Amazon SES, Mandrill, Mailgun, Mailjet, OhMySMTP, Postmark, SendGrid, Sendinblue)
  • récupère automatiquement les contacts dans les courriels envoyés ou reçus, avec des catégories prédéfinies en fonction des options de recherche dans la boîte à lettres
  • crée automatiquement des conversations à partir des courriels envoyés ou reçus en se basant sur le destinataire et non pas sur le sujet du courriel
  • possibilité d'envoyer des courriels à des catégories de contacts et de faire des substitutions
  • Modèles Twig
  • suivi des courriels (si utilisé avec un agent courriel tiers tel que sendgrid)
  • autocomplétion de to, cc, bcc en utilisant les requêtes de formulaires standard VisualData
  • entièrement configurable en utilisant les schémas de VisualData, les modèles et les articles de Mediawiki.
  • Intégration de TinyMCE
  • intégration des notifications Echo

Voir la démonstration – Envoyer un courriel pour information à wikisphere.org et observer le fonctionnement

Eléments de l'interface utilisateur

Après l'installation l'extension crée les liens suivants dans le panneau latéral :

Installation

  • installer PHP-Imap sur votre serveur. Sous Ubuntu ceci est fait avec la seconde commande
sudo apt install php7.1-imap

(remplacer 7.1 par votre version PHP actuelle)

  • Installer Extension:VisualData en suivant les instructions correspondantes.
  • Télécharger ContactManager et placer les fichiers dans le répertoire ContactManager du dossier extensions/.
  • Exécuter composer update --no-dev dans le répertoire des extensions pour installer les bibliothèques PHP nécessaires
  • Ajouter le code suivant à la fin de votre LocalSettings.php
wfLoadExtension( 'ContactManager' );
  • Exécuter php maintenance/run.php update (pour installer les tables nécessaires)
  • Exécuter php ./extensions/ContactManager/maintenance/ImportData.php (pour importer les articles dans l'espace de noms ContactMananger du wiki avec les modèles et les schémas nécessaires à l'extension)
  • Yes Fait – Aller sur Special:Version sur votre wiki pour vérifier que l'extension s'est bien installée.

Installer les extensions suivantes :

Activer StringFunctions :

$wgPFEnableStringFunctions = true;

La configuration de base doit être similaire à :

wfLoadExtension( 'VisualData' );
// wfLoadExtension( 'TabberNeue' );
// $wgTabberNeueEnableAnimation = false;
wfLoadExtension( 'Tabs' );
wfLoadExtension( 'UrlGetParameters' );
wfLoadExtension( 'TemplateStyles' );
wfLoadExtension( 'ContactManager' );
$wgVisualDataEditDataNamespaces = [ 0, 4, 2226, 2230, 2260 ];
$wgNamespacesWithSubpages[2260] = true;
$wgPFEnableStringFunctions = true;
$wgContactManagerAttachmentsFolder = "$IP/ContactManagerFiles";

// *** désactiver l'affichage des sous-pages éventuellement trop coûteux
$wgSubpageNavigationDisablePaths = [
	'ContactManager:Mailboxes',
	'ContactManager:Contacts',
];

Créer deux entrées dans le fichier de la crontab :

* * * * * php www-data $IP/maintenance/run.php "$IP/extensions/ContactManager/maintenance/CheckMessages.php" > /dev/null 2>&1
* * * * * php www-data $IP/maintenance/runJobs.php --type ContactManagerJob --memory-limit default >> $IP/ContactManagerJob.log 2>&1

(ce qui suppose que le nom d'utilisateur du serveur Web est www-data et qu'il peut exécuter les fichiers connexes; remplacer $IP par le chemin absolu de votre installation Mediawiki)

Le premier script crée les tâches pour vérifier les nouveaux messages courriels s'ils sont dûs, et le second exécute toutes les minutes les tâches présentes en file d'attente.
Voici un tutoriel pour gérer les crontab.

Pour créer une crontab pour un utilisateur particulier (par exemple www-data) utilisez la commande suivante :

sudo crontab -e -u www-data

Dans ce cas les entrées de la crontab doivent apparaître ainsi :

* * * * * php $IP/maintenance/run.php "$IP/extensions/ContactManager/maintenance/CheckMessages.php" > /dev/null 2>&1
* * * * * php $IP/maintenance/runJobs.php --type ContactManagerJob --memory-limit default >> $IP/ContactManagerJob.log /dev/null 2>&1

(remplacez $IP par le chemin absolu de votre installation Mediawiki)

(optionnel mais recommandé) Veillez à ce que le chemin d'installation MediaWiki soit la propriété du serveur web (Apache2 sous Ubuntu)

sudo chown www-data:www-data $IP -R

(remplacez $IP par le chemin absolu de votre installation Mediawiki)

Accordez les droits d'exécution au propriétaire du fichier : (mettre 777 si vous avez sauté l'étape précédente)

sudo chmod 755 $IP/extensions/ContactManager/maintenance/CheckMessages.php

(remplacez $IP par le chemin absolu de votre installation Mediawiki)

Créer le répertoire ContactManagerFiles sous le chemin d'installation Méwiawiki ou spécifier un autre chemin en utilisant le paramètre $wgContactManagerAttachmentsFolder dans le fichier LocalSettings. Accordez au serveur web les droits de le modifier en utilisant :

sudo chown www-data:www-data $IP/ContactManagerFiles

(remplacez $IP par le chemin absolu de votre installation Mediawiki)

Cela garanti que les pièces jointes (si activé) peuvent être sauvegardées et gérées par l'extension.


Flux de travail

L'extension crée un ensemble de pages dans l'espace de noms ContactManager (ainsi que des modèles avec le préfixe ContactManager/) permettant de créer et de modifier les boîtes à lettres, d'ajouter des agents courriel, de gérer les messages et leur entête ainsi que les tâches, les conversations et les contacts pour chacune des boîtes, d'envoyer des messages, et de naviguer parmi tous les articles, les schémas, les modèles et les modules créés par l'extension.

Voici tout ce qu'il vous faut savoir pour disposer d'un courriel web complètement fonctionnel en quelques minutes.

Etape 1 : créer une boîte à lettres

Créer une boîte à lettres sur la page ContactManager:Mailboxes

Insérer simplement le nom souhaité de la boîte à lettres et une liste d'adresses courriel autorisées dans le formulaire name <email> (ou simplement le courriel), ainsi que le champ reply-to.

Après avoir créé une boîte à lettres l'application vous redirige vers la page suivante :

Panneau de contrôle principal pour chaque boîte à lettres, avec lequel vous pouvez gérer les tâches, afficher et actualiser les informations de ces boîtes, les dossiers, définir des règles pour récupérer les messages, lire les en-têtes et le contenu des messages, gérer les conversations et les contacts et composer les messages.

tester interactivement ici

Etape 2 : définir les données personnelles de la boîte à lettres

Créer les clés des boîtes à lettres

Modifier Manuel:LocalSettings.php et créer une clé dans le paramètre global $wgContactManagerIMAP (utilisé pour recevoir le courriel) et $wgContactManagerSMTP (utilisé pour envoyer le courriel), avec le nom de la boîte à lettres créée, ainsi :

$wgContactManagerIMAP = [
	'mailbox_1' => [
		'server' => '',
		'username' => '',
		'password' => '',
		'port' => 993,
	],
	// ...
	
];

$wgContactManagerSMTP = [
	'mailbox_1' => [
		'server' => '',
		'username' => '',
		'password' => '',
		'port' => 465
	],
    // ...
];

(remplacer mailbox_1 par le nom de la boîte à lettres utilisé à l'étape 1)

Utiliser getenv de PHP pour stocker le ,mot de passe dans les variables d'environnement pour des raisons de sécurité.

Activer Imap avec Gmail

Aller dans les paramètres de gmail, dans l'onglet Forwarding and POP/IMAP et activez Imap

Puis aller sur le Gestionnaire du compte Google, configurer l'authentification à deux facteurs (2FA) en suivant ces étapes, et déclarer un mot de passe pour l'application en suivant ces étapes. Saisir imap.gmail.com dans le champ Mailbox server du formulaire Boîte à lettres du gestionnaire de contacts, et le mot de passe de l'application dans le champ Mailbox password.

Etape 3 : définir les tâches

Cliquer sur les boutons Get mailbox info et Get folders comme indiqué ci-dessous.

Noter que chaque bouton se compose du bouton principal (2) sur la gauche et du bouton de modification (1) sur la droite. Le premier ensemble définit les propriétés du bouton et le second l'active. Les deux premiers boutons doivent être remplis avec le nom de la boîte à lettres et le nom de la tâche, afin que vous puissiez les activer ensemble simultanément. Si la crontab a été correctement configurée comme indiqué dans les instructions d'installation, elles seront exécutées et terminées dans les 1 à 3 minutes.

En revanche, si la crontab n'a pas encore été configurée, vous devez exécuter la commande suivante à partir de la ligne de commande :

php maintenance/runJobs.php --type ContactManagerJob --memory-limit -1

Une fois que cette liste de répertoires a été récupérée à partir de la boîte à lettres et sauvegardée dans les données JSON associées à l'article, cliquer sur le bouton d'édition à côté du bouton primaire Get messages afin de configurer les propriétés associées.

Le formulaire permet de définir quels répertoires sont à télécharger de la boîte à lettres, le nom du répertoire local, le critère de recherche pour chaque dossier, s'il faut ou non récupérer le contenu des messages, la méthode de recherche (critère du search ou par UID) pour assigner des catégories, vérifier les messages toutes les n minutes, définir un nombre arbitraire de filtres à la fois pour l'entête et pour les messages avec leurs actions associées et bien plus encore !

Nous vous recommandons de chercher d'abord les messages à partir d'une date donnée (par exemple la dernière année calendaire en utilisant fetch search) et ensuite de définir fetch UIDs incremental et check email every à 10 minutes) pour que la connaissance de votre boîte aux lettres soit toujours à niveau !

Dans le premier cas, il faut activer la tâche en cliquant sur le bouton principal Get messages après avoir enregistré les propriétés. Dans le second cas, il n'est pas nécessaire d'activer la tâche à chaque fois car elle est recréée toutes les n minutes par le script de maintenance de la crontab.

Tous les critères de recherche IMAP sont pris en charge et accessibles ou éditables par le biais du formulaire pour chaque dossier séparément.

  • ALL
  • ANSWERED
  • BCC
  • BEFORE
  • BODY
  • CC
  • DELETED
  • FLAGGED
  • FROM
  • KEYWORD
  • NEW
  • OLD
  • ON
  • RECENT
  • SEEN
  • SINCE
  • SUBJECT
  • TEXT
  • TO
  • UNANSWERED
  • UNDELETED
  • UNFLAGGED
  • UNKEYWORD
  • UNSEEN

Un nombre arbitraire de filtres pour les entêtes et les messages peut également être initialisé à travers le formulaire afin de sauter les messages correspondants en fonction d'une condition spécifique, de les enregistrer dans un chemin spécifique ou d'attribuer une ou plusieurs catégories. Les expressions régulières sont prises en charge pour les champs textuels, les entrées de date pour les champs de date et les entrées numériques pour les champs numériques.

Filtres pris en charge pour les entêtes

  • subject
  • from
  • to
  • date
  • message_id
  • references
  • in_reply_to
  • size
  • uid
  • msgno
  • recent
  • flagged
  • answered
  • deleted
  • seen
  • draft
  • udate

Filtres pris en charge pour les messages

  • id
  • headersRaw
  • imapPath
  • mailboxFolder
  • isSeen
  • isAnswered
  • isRecent
  • isFlagged
  • isDeleted
  • isDraft
  • parsedDate
  • sender/name
  • sender/address
  • deliveredTo
  • textPlain
  • textHtml
  • visibleText
  • detectedLanguage
  • hasAttachments
  • regularAttachments
  • conversationHash
  • headers/returnPath
  • headers/received
  • headers/resentDate
  • headers/resentFrom
  • headers/resentSender
  • headers/resentTo
  • headers/resentCc
  • headers/resentBcc
  • headers/resentMessageId
  • headers/date
  • headers/from
  • headers/sender
  • headers/replyTo
  • headers/to
  • headers/cc
  • headers/bcc
  • headers/messageId
  • headers/inReplyTo
  • headers/references
  • headers/subject
  • headers/comments
  • headers/keywords
  • headers/mimeVersion
  • headers/contentType
  • headers/contentTransferEncoding
  • headers/contentId
  • headers/contentDescription
  • headers/contentDisposition
  • headers/contentLanguage
  • headers/contentBase
  • headers/contentLocation
  • headers/contentFeatures
  • headers/contentAlternative
  • headers/contentMd5
  • headers/contentDuration
  • headers/autoSubmitted
  • attachments/contentId
  • attachments/encoding
  • attachments/description
  • attachments/contentType
  • attachments/name
  • attachments/sizeInBytes
  • attachments/sizeInMB
  • attachments/disposition
  • attachments/fileinfo
  • attachments/mime
  • attachments/mimeType
  • attachments/mimeEncoding
  • attachments/fileExtension

Etape 4 : gérer la boîte à lettres

Après avoir défini les règles pour récupérer les messages, activé la tâche en cliquant sur le côté principal (gauche) du bouton et récupéré les messages soit en exécutant la tâche à partir de la ligne de commande ou de la crontab, la page d'aperçu de la boîte à lettres sera remplie interactivement avec les entêtes, les messages, les conversations et les contacts récupérés !

Voici l'affichage après quelques minutes :

Pendant que les conversations, les contacts et les messages sont récupérés, vous pouvez immédiatement catégoriser les contacts afin d'envoyer des courriels en masse vers les catégories, également avec des substitutions, et les gérer selon vos besoins.

La page des contacts d'un destinataire est accessible à partir des tables suivantes (ou des pages) :

  • conversations
  • lire le courriel (champ from)
  • contacts

Une page de contact ressemble à ceci, pour la modifier cliquer sur le bouton Edit comme sur l'image, puis cliquer sur validate et ajouter une ou plusieurs catégories :

Cette page est créée automatiquement par l'extension en se basant sur les contacts reçus et envoyés, complétée grâce à l'analyse syntaxique avec le nom, les dates de première et dernière visite, les langues, et plus encore.


Etape 5 : créer des agents courriel supplémentaires

Un agent courriel (mailer) est un programme qui envoie les messages courriel. Il peut se trouver sur le serveur (tel que sendmail) ou être fourni en tant que SaaS comme SendGrid, mailgun et autres. Grâce à l'intégration de l'agent Symfony, ContactManager prend en charge tous les fournisseurs reconnus par Symfony Ils peuvent être utilisés pour envoyer des messages courriels en masse et supportent les modèles natifs et les substitutions.

Pour déclarer un agent supplémentaire (sendmail ou un fournisseurs tiers) aller sur la page ContactManager:Mailers, choisir le fournisseur et lui assigner un nom en utilisant le formulaire suivant.

Une fois la page créée, elle affiche un tableau modifiable :

Etape 6 : définir les données confidentielles des agents créés

Chaque agent courriel peut utiliser SMTP, HTTP et (ou) l'API transport, et nécessite son ensemble de données confidentielles spécifiques, en fonction de la table suivante.

Fournisseur SMTP HTTP API
Amazon SES username/password access_key/secret_key access_key/secret_key
Gmail username/app-password n/a n/a
Mandrill username/password KEY KEY
Mailgun username/password KEY/DOMAIN KEY/DOMAIN
Mailjet access_key/secret_key n/a access_key/secret_key
Postmark ID n/a KEY
Sendgrid KEY n/a KEY
Sendinblue username/password n/a KEY
OhMySMTP API_TOKEN n/a API_TOKEN

(source : https://symfony.com/doc/5.x/mailer.html)

De même ContactManager va rechercher un objet dans LocalSettings.php avec la structure suivante.

$wgContactManagerAMAZON = [
	'mailer_1' => [
		'smtp' => [
			'username' => '',
			'password' => ''
		],
		'http' => [
			'access_key' => '',
			'secret_key' => ''
		],
		'api' => [
			'access_key' => '',
			'secret_key' => ''
		]
	],
    // ...
];

// ...
$wgContactManagerSENDGRID = [
	'mailer_2' => [
		'smtp' => [
			'username' => '',
			'password' => '',
		],
		'api' => [
			'KEY' => '',
		]
	],
    // ...
];

$wgContactManagerAMAZON est le nom du paramètre global composé avec le nom du fournisseur en majuscules comme suffixe, mailer_n est le nom du fournisseur choisi, et les clés nécessaires reflètent le tableau ci-dessus pour chacun des fournisseurs et le transport.

C'est pourquoi l'approche est d'utiliser un objet pour chaque fournisseur, chacun d'eux contenant un ou plusieurs comptes, pour une meilleure lisibilité par rapport à l'utilisation d'un objet unique qui les contiendrait tous.

Etape 7 : envoyer des courriels en masse aux destinataires de la conversation ou aux contacts des catégories

Aller sur la page ContactManager:Compose, sélectionner une boîte à lettres et entrer une catégorie de test (avec des articles correspondant aux contacts de ContactManager comme expliqué à l'étape 4, ou avec tout schéma de VisualData qui comprend une propriété type de courriel) dans le champ catégories bcc.

Le formulaire ci-dessous permet de :

  • envoyer du courriel en utilisant différents agents
  • sélectionner à partir des champs enregistrés sous chaque agent
  • sélectionner les destinataires existants pour to, cc et bcc avec l'auto-complétion et ajouter de nouveaux destinataires.
  • envoyer vers les catégories de contacts
  • exclure des destinataires particuliers d'une catégorie
  • choisir entre plain-text et html (plain-text sera encapsulé dans un modèle Twig à la différence de html)
  • choisir un modèle Twig (si le type du contenu est du texte)
  • ajouter des pièces jointes (non encore testé ni complètement implémenté)
  • définir le décalage et la limite lors de l'envoi vers une grande quantité de destinataires

Les remplacements, dans le formulaire %first_name% (basé sur le schéma associé à chaque destinataire) sont autorisés uniquement en utilisant un agent (actuellement sendgrid) puisqu'ils sont effectués après l'envoi du courriel, ceci afin d'éviter d'envoyer à partir du serveur Mediawiki, un courriel pour chaque destinataire. Pour la même raison, les substitutions de propriétés du schéma ne sont pas autorisées dans le modèle Twig, qui est utilisé comme enveloppe commune pour le contenu du corps.

Le même formulaire est également utilisé dans une fenêtre contextuelle quand la réponse est faite depuis la boîte de réception, ou lors de l'envoi du courriel aux participants de la conversation !

Droits et privilèges

Groupes

L'extension crée les groupes suivants : (ils peuvent être assignés aux utilisateurs via la page spéciale standard Special:UserRights). Seuls les utilisateurs de ces groupes peuvent créer les tâches de ContactManager, et voir les liens dans le panneau latéral de l'interface utilisateur. Néanmoins, cela n'empêche pas d'accéder aux pages concernées et à l'espace de noms de ContactManager. Si vous devez les protéger, utiliser Extension:PageOwnership .

Groupe Description
contactmanager-admin permettre aux utilisateurs de gérer les boîtes à lettres et de parcourir le suivi

L'extension crée les droits utilisateur suivants.

Droit Description
contactmanager-can-manage-mailboxes peut gérer les boîtes à lettres
contactmanager-can-browse-tracking peut voir le suivi

Droits des groupes

Groupe contactmanager-can-manage-mailboxes contactmanager-can-browse-tracking
sysop v v
bureaucrat v v
contactmanager-admin v v

Problèmes connus

Les conversations du tableau des conversations ne peuvent pas être recherchées à l'aide du nom des participants si leur nombre dépasse la limite (Ajax est utilisé pour la navigation). Cela se produit parce que le nom des participants est récupéré à l'aide d'un modèle, avec une requête supplémentaire à l'intérieur, après quoi la requête principale est traitée. Peut être corrigé uniquement si Extension:VisualData prend en charge les jointures dans les requêtes, ce qu'il ne fait pas actuellement.

Feuille de route

  • suivi du courriel (quand utilisé avec des agents)
  • implémentation des pièces jointes en ligne
  • pièces jointes en ligne avec TinyMCE
  • intégration de Twilio

Support et bogues

Pour un support professionnel veuillez écrire à cette adresse courriel

Voir aussi