1. Le symptôme
Tout semble normal : vous postez un message dans un forum d’annonces. Il s’affiche, mais personne ne le reçoit. Pas de mail, pas d’erreur, même le CRON [1] est « OK ». Alors pourquoi ce silence absolu ?
2. Fausse piste : le CRON et PHP
Moodle 5.0+ exige PHP 8.3 ou plus. Mais certaines configurations ont encore PHP 7.4 pour les tâches en ligne de commande (CLI). Le CRON se lance, mais est ignoré par Moodle.
Une fois corrigé, le CRON fonctionne. Mais toujours aucun message...
3. Les vraies causes (cumulatives)
- L’étudiant n’a jamais accédé au cours : Moodle ne lui envoie rien.
- Il est marqué comme Pas actuel : son inscription est suspendue ou expirée.
- La méthode d’inscription était désactivée (icône œil fermé).
- Le forum n’était pas en abonnement imposé.
- Le message a été modifié avant le délai de 1 ou 30 min : pas envoyé.
Un seul de ces éléments suffit à bloquer l’envoi.
4. Comment savoir si un message est parti
- Le forum indique : Ce message a été envoyé à tous les participants inscrits...
- Dans les journaux : Notification envoyée (origine : CLI) avec le nom de l’étudiant concerné.
- Dans le fichier phpmail.log : trace d’envoi avec sujet.
5. Tester en toute sécurité
Créez un cours test, un utilisateur test [2] et un forum d’annonces en abonnement imposé. Postez un message, attendez le délai d’édition, lancez le CRON. Observez les journaux.
6. Conclusion
Moodle est précis, mais parfois silencieux. Aucun message d’erreur n’avertit que vos mails ne partent plus. Ce silence peut durer des semaines si personne ne vous le signale.