Dotclear – Envoi d’e-mails chez Online.net
Ludo | 13 février 2021Il y a peut-être des raisons historiques liées au blocage de la fonction mail() par mon hébergeur, ou alors il m’a manqué l’éclair de génie qui a changé la donne aujourd’hui. J’ai finalement trouvé la raison, par la bonne vieille méthode « essai/erreur », en remplaçant tout d’abord le contenu de la fonction _mail initiale de Dotclear par du code de test fourni par Online, et qui permet effectivement d’envoyer un e-mail depuis une page PHP… |
14/03/2021: Fin de l’ère Dotclear! (voir les détails dans la suite de ce billet)
30/04/2021: Ajout d’une note à la suite du billet concernant l’intégration du système reCaptcha sur la page de commentaires
Puisque ce code de test fonctionnait aussi une fois inséré dans la fonction _mail de Dotclear, j’ai fini par réutiliser petit à petit les variables fournies à la fonction par Dotclear, jusqu’à trouver celle qui posait problème.
Il y a visiblement une erreur dans le format de l’en-tête de l’e-mail. En écrasant la variable $headers à l’intérieur de la fonction _mail afin d’y insérer moi-même l’en-tête, j’arrive enfin à recevoir les e-mails de notification!
Pour corriger cela, il faut ouvrir le fichier config.php qui se trouve dans le répertoire inc de Dotclear, aller à la fin du fichier où se trouve la fonction _mail, et la remplacer par ce qui suit:
function _mail($to,$subject,$message,$headers)
{
// En-têtes du message
$headers = "";
$headers = "From: NOM DU SITE <ADRESSE-EMAIL_DE_L-EMETTEUR@NOM-DE-DOMAINE.COM-OU-FR-OU-NET-OU-AUT'>\n"; // ajout du champ From
$headers = $headers."Content-type: text/plain; charset=UTF-8\n"; // ajout du type d'encodage du corps
// Appel à la fonction mail
mail($to, $subject, $message, $headers);
}
Remplacez le texte en majuscules par les informations vous concernant. Si vous oubliez de le faire, vous vous rendrez certainement compte de ce qu’il faut modifier une fois que vous recevrez l’e-mail 🙂
Je vais maintenant m’attaquer à l’extension permettant à chaque personne postant un commentaire de s’abonner afin de recevoir les réponses suivantes. Pour l’instant, la case à cocher s’affiche sous le « captcha » anti-robot / anti-spam, mais ces e-mails ne sont visiblement jamais envoyés…
14/03/2021: Face à l’impossibilité de faire fonctionner l’extension de notification de réponse à un commentaire sur Dotclear, j’ai testé WordPress et validé le bon fonctionnement des envois d’e-mails. Le thème utilisé sur mon blog ayant été porté de WordPress à Dotclear par son créateur, j’ai pu le réutiliser, mais non sans mal…
S’agissant d’un thème assez ancien, il ne figure pas dans la liste de ceux proposés sur l’interface d’administration de WordPress. Il aura fallu fouiller sur mon moteur de recherche favori pour retrouver le site du créateur de ce thème, et pour me rendre compte finalement que les fichiers n’étaient plus disponible en téléchargement! Heureusement, la DeLorean du web m’a permis de remettre la main dessus. Ce n’est que le début de l’aventure.
Des extensions de WordPress affirment permettre l’import d’une base de données Dotclear afin de transposer l’intégralité du contenu sur WordPress, mais il s’agit ici aussi de fichiers obsolètes:
- Incompatibles avec les versions récentes de Dotclear ;
- Utilisant des fonctions PHP qui n’existent plus ;
- Incompatibles avec les versions récentes de WordPress.
Je vous fais la version courte, car j’ai aussi beaucoup utilisé les copies de sites fournies par archive.org, jusqu’à ce que la recopie manuelle de tout le contenu de mon blog me paraisse finalement être la solution la moins compliquée à mettre en œuvre.
Le blog utilise donc maintenant WordPress. Il se peut que des fautes d’inattention lors de la recopie manuelle impactent certains billets et fichiers joints. Si vous rencontrez le moindre problème, sachez que vous pouvez m’en faire part en postant un commentaire dans le billet concerné. Vous recevrez même une notification par e-mail lorsque j’y répondrai, n’est-ce pas magnifique?
Comme le thème utilisé ici est assez ancien, cela nécessite quelques modifications manuelles dans ses fichiers.
Par exemple, j’utilise l’extension Subscribe to comments reloaded pour les notifications de réponses aux commentaires. Afin d’afficher la case à cocher dans le formulaire de commentaires, il faut éditer le fichier comments.php contenu dans le répertoire du thème pour y ajouter ce code:
<?php global $wp_subscribe_reloaded; if (isset($wp_subscribe_reloaded)){ echo $wp_subscribe_reloaded->stcr->subscribe_reloaded_show(); } ?>
Je l’ai ajouté juste en dessous du code affichant la zone de saisie du commentaire:
<textarea name="comment" id="comment" cols="100%" rows="10" tabindex="4"></textarea>
<?php global $wp_subscribe_reloaded; if (isset($wp_subscribe_reloaded)){ echo $wp_subscribe_reloaded->stcr->subscribe_reloaded_show(); } ?>
30/04/2021: Comme je viens de passer ma journée à recevoir des notifications par e-mail de nouveaux commentaires, du SPAM bien entendu, j’ai tenté une nouvelle fois d’intégrer un système reCaptcha. J’avais déjà tenté lorsque j’ai migré le blog sur WordPress, sans succès… Cette fois-ci, sachant où placer le code nécessaire pour afficher ce module malgré le fait que mon thème est hors d’âge, et ayant visiblement tapé les bons mots clé dans mon moteur de recherche favori, j’ai pu mettre en service l’extension reCaptcha créée par BestWebSoft disponible dans le menu d’installation d’extensions de WordPress.
Voici ce qu’il faut ajouter, toujours dans comments.php, au même endroit que cité ci-dessus:
<?php echo apply_filters( 'gglcptch_display_recaptcha', '', 'comments_form' ); ?>