Soupçon de bug avec version dc 2.28.x #1

Closed
opened 2023-12-20 21:49:26 +00:00 by jemattarde · 12 comments

Bonjour,
Nous sommes trois sur trois du même blog à ne plus recevoir les notifications par mail lors de nouveaux commentaires. Cela date apparemment du passage de la 2.27.1 vers la 2.28.1.

En première vérification, j'ai testé l'envoi de mails vers les adresses de chacun avec votre plugin testMail et les mails envoyés avec ce plugin de test arrivent pourtant bien à bon port.

Le plugin emailNotification, fonctionne-t-il parfaitement chez vous avec la version dc 2.28.1 ? Mis à part l'encart dans les profils utilisateurs "Notification par e-mail" "Avertir des nouveaux commentaires par e-mail : Tous les billets", c'est l'unique endroit de configuration du plugin emailNotification, on est d'accord ?

Merci pour votre aide
Gilles

Bonjour, Nous sommes trois sur trois du même blog à ne plus recevoir les notifications par mail lors de nouveaux commentaires. Cela date apparemment du passage de la 2.27.1 vers la 2.28.1. En première vérification, j'ai testé l'envoi de mails vers les adresses de chacun avec votre plugin [testMail](https://git.dotclear.watch/JcDenis/testMail) et les mails envoyés avec ce plugin de test arrivent pourtant bien à bon port. Le plugin **emailNotification**, fonctionne-t-il parfaitement chez vous avec la version dc 2.28.1 ? Mis à part l'encart dans les profils utilisateurs _"Notification par e-mail" "Avertir des nouveaux commentaires par e-mail : Tous les billets"_, c'est l'unique endroit de configuration du plugin emailNotification, on est d'accord ? Merci pour votre aide Gilles
JcDenis self-assigned this 2023-12-24 08:27:26 +00:00
  1. L'option dans le profil utilisateur est bien le seul réglage de ce plugin.
  2. Il y a bien nu problème, je viens de tester sur un blog en ligne et testMail fonctionne mais pas emailNotification
1) L'option dans le profil utilisateur est bien le seul réglage de ce plugin. 2) Il y a bien nu problème, je viens de tester sur un blog en ligne et testMail fonctionne mais pas emailNotification

Ah , je ne regardais pas le bon mail. Donc chez moi il fonctionne bien !

Ah , je ne regardais pas le bon mail. Donc chez moi il fonctionne bien !
  • Utilises tu un plugin du style ActivityReport ? Si oui, peut-être le désactiver le temps de tester le bon fonctionnement de emailNotification.
  • Tester avec un compte super admin et un compte "normal", tester sur "tous les billets" et "uniquement mes billets".
- Utilises tu un plugin du style ActivityReport ? Si oui, peut-être le désactiver le temps de tester le bon fonctionnement de emailNotification. - Tester avec un compte super admin et un compte "normal", tester sur "tous les billets" et "uniquement mes billets".

Merci pour les tests et cette confirmation.

J'ai creusé un peu sur ma configuration. Comme mon hébergeur m'oblige de passer par une authentification SMTP lors d'envoi de mails sortants, j'avais écrit dans /inc/config.php une fonction _mail (au moment de dc 2.26) pour surcharger la dite fonction (telle que la documentation dotclear le prévoit). Voici le code pour info :

function _mail($to,$subject,$message,$headers) {
	$smtpConfig = array(
        "host" => DC_SMTPHOST,
        "port" => DC_SMTPPORT,
        "user" => DC_SMTPUSER,
        "upwd" => DC_SMTPPASSWORD,
    );
    mySendMailWithPhpMailer($to,$subject,$message,$smtpConfig);
}

HORS je ne me souvenais plus mais j'avais AUSSI recopié cette fonction dans la précédente version du plugin emailNotification qui a été écrasé par la maj du plugin 1.7. J'ai retrouvé heureusement cette modification du code du plugin dans une archive.

Ce que je ne m'explique pas c'est que testMail fonctionne tandis que emailNotification ne fonctionne pas dans ma configuration. Au pis je peux recopier le code précédent dans emailNotification comme avant mais ça m'oblige à maintenir le plugin à chaque mise à jour. Si le plugin testMail fonctionne correctement sans ajout dans le code du plugin, ce doit bien être possible aussi avec emailNotification. Mais je ne vois pas ce qui diffère...
Est-ce qu'il peut y avoir une effet frontend versus backend ?

Merci pour les tests et cette confirmation. J'ai creusé un peu sur ma configuration. Comme mon hébergeur m'oblige de passer par une authentification SMTP lors d'envoi de mails sortants, j'avais écrit dans /inc/config.php une fonction _mail (au moment de dc 2.26) pour surcharger la dite fonction (telle que la documentation dotclear le prévoit). Voici le code pour info : ``` function _mail($to,$subject,$message,$headers) { $smtpConfig = array( "host" => DC_SMTPHOST, "port" => DC_SMTPPORT, "user" => DC_SMTPUSER, "upwd" => DC_SMTPPASSWORD, ); mySendMailWithPhpMailer($to,$subject,$message,$smtpConfig); } ``` **HORS je ne me souvenais plus mais j'avais AUSSI recopié cette fonction dans la précédente version du plugin emailNotification qui a été écrasé par la maj du plugin 1.7. J'ai retrouvé heureusement cette modification du code du plugin dans une archive.** Ce que je ne m'explique pas c'est que testMail fonctionne tandis que emailNotification ne fonctionne pas dans ma configuration. Au pis je peux recopier le code précédent dans emailNotification comme avant mais ça m'oblige à maintenir le plugin à chaque mise à jour. Si le plugin testMail fonctionne correctement sans ajout dans le code du plugin, ce doit bien être possible aussi avec emailNotification. Mais je ne vois pas ce qui diffère... Est-ce qu'il peut y avoir une effet frontend versus backend ?

Bonnes remarques, je vais partir dans cette direction et comparer les deux !

Bonnes remarques, je vais partir dans cette direction et comparer les deux !

A première vue les deux sont identiques.

On dirait que ta fonction mySendMailWithPhpMailer n'est pas connu coté public.

A première vue les deux sont identiques. On dirait que ta fonction mySendMailWithPhpMailer n'est pas connu coté public.

C’est une piste que je vais creuser. Y a t il des lignes de code prévues pour définir le contexte d’exécution d’une fonction ? Avez vous un exemple de fonction qui est appelée aussi bien dans un fichier backend et frontend ? Est ce que c'est une histoire de namespace, que devrait contenir dans ce cas l’en-tête du fichier contenant ma fonction mySendMailWithPhpMailer ? Ça fait bcp de questions … :) rien de pressant et les questions sont peut être hors de propos.
Joyeux Noël !

C’est une piste que je vais creuser. Y a t il des lignes de code prévues pour définir le contexte d’exécution d’une fonction ? Avez vous un exemple de fonction qui est appelée aussi bien dans un fichier backend et frontend ? Est ce que c'est une histoire de namespace, que devrait contenir dans ce cas l’en-tête du fichier contenant ma fonction mySendMailWithPhpMailer ? Ça fait bcp de questions … :) rien de pressant et les questions sont peut être hors de propos. Joyeux Noël !

(Aucune question n'est idiote, surtout quand je ne sais pas affirmer d'où vient le soucis.)

Ce qui m'étonne est que ton bout de code est dans le config.php donc il devrait être chargé aussi bien coté admin que public !

Un autre test serait d'enlever ton bout de code du config (le temps des tests) et d'installer le plugin mail2log, puis de tester une notification. Normalement le mail devrait finir dans les logs dotclear (Utiliser le plugin dcLog pour les voir)

(Aucune question n'est idiote, surtout quand je ne sais pas affirmer d'où vient le soucis.) Ce qui m'étonne est que ton bout de code est dans le config.php donc il devrait être chargé aussi bien coté admin que public ! Un autre test serait d'enlever ton bout de code du config (le temps des tests) et d'installer le plugin mail2log, puis de tester une notification. Normalement le mail devrait finir dans les logs dotclear (Utiliser le plugin dcLog pour les voir)

Ah mais attend, ton bout de code ne passe pas les headers à phpMailer, c'est normal ?

Ah mais attend, ton bout de code ne passe pas les headers à phpMailer, c'est normal ?

J’avais sabré effectivement ce parametre « headers » en conscience. M’importait principalement d’envoyer un contenu « msg » vers un destinataire «  to ».
Le reste est hardcodé dans mySendMailWithPhpMailer…
J’essaierai mail2log cette semaine et je ferai d’autres tests en utilisant dcLog, ce dernier devrait bien m’aider !

_

« Ce qui m'étonne est que ton bout de code est dans le config.php donc il devrait être chargé aussi bien coté admin que public ! »

_

Oui pour _mail mais mySendMailWithPhpMailer est définie dans un fichier du même nom avec le dossier de la librairie PhpMailer au même niveau que le fichier config.php

J’avais sabré effectivement ce parametre « headers » en conscience. M’importait principalement d’envoyer un contenu « msg » vers un destinataire «  to ». Le reste est hardcodé dans mySendMailWithPhpMailer… J’essaierai mail2log cette semaine et je ferai d’autres tests en utilisant dcLog, ce dernier devrait bien m’aider ! _ > « Ce qui m'étonne est que ton bout de code est dans le config.php donc il devrait être chargé aussi bien coté admin que public ! » _ Oui pour _mail mais mySendMailWithPhpMailer est définie dans un fichier du même nom avec le dossier de la librairie PhpMailer au même niveau que le fichier config.php

C’est résolu.
Le paramétrage DNS de mon hébergeur était bancal, j’ai dû modifier le nom du serveur SMTP et les notifications mail sont revenus. C’était traître car phpMailer - même dans son mode debug - ne retournait pas d’erreurs lors de l’envoi des messages.

Désolé pour la fausse alerte sur le plugin. Merci encore pour les pistes. Ça m’a aidé à y voir clair

C’est résolu. Le paramétrage DNS de mon hébergeur était bancal, j’ai dû modifier le nom du serveur SMTP et les notifications mail sont revenus. C’était traître car phpMailer - même dans son mode debug - ne retournait pas d’erreurs lors de l’envoi des messages. Désolé pour la fausse alerte sur le plugin. Merci encore pour les pistes. Ça m’a aidé à y voir clair

Pas de soucis, c'est toujours intéressant de voir certains cas de figure :)

Pas de soucis, c'est toujours intéressant de voir certains cas de figure :)
Sign in to join this conversation.
No Label
No Milestone
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: JcDenis/emailNotification#1
There is no content yet.