seenthis / seenthis_squelettes

plugin "squelettes" de seenthis
11 stars 6 forks source link

double header message-id dans les mails de notification #289

Closed brunob closed 2 years ago

brunob commented 2 years ago

Pour le contexte https://discuter.rezo.net/t/anomalie-double-header-message-id/33871/3

brunob commented 2 years ago

Ok, donc, la classe PHPMailer semble ajouter par défaut un Message-ID ici https://git.spip.net/spip-contrib-extensions/facteur/src/tag/v4.1.1/lib/PHPMailer-6/src/PHPMailer.php#L2402 ce qui donne ceci dans $result à ce moment dans le code :

Date: Fri, 8 Apr 2022 19:45:37 +0200
To: xx@xx.fr
From: "anna doll (anna) - SeenThis" <robot@octopouce.net>
Subject: =?utf-8?Q?Re_:_Encore_une_image_qui_va_se_faire_bloquer..._..._Mais_pas_c?=
 =?utf-8?Q?elle_l=C3=A0_!?=
Message-ID: <@localhost>

Puis ensuite, la fonction ajoute le message-id qu'on passe depuis https://github.com/seenthis/seenthis/blob/master/inc/seenthis_notifier.php#L73 et ça donne bien un double message-di dans le $result :

"Date: Fri, 8 Apr 2022 19:45:37 +0200
To: xx@xx.fr
From: "anna doll (anna) - SeenThis" <robot@octopouce.net>
Subject: =?utf-8?Q?Re_:_Encore_une_image_qui_va_se_faire_bloquer..._..._Mais_pas_c?=
 =?utf-8?Q?elle_l=C3=A0_!?=
Message-ID: <@localhost>
X-Mailer: PHPMailer 6.1.3 (https://github.com/PHPMailer/PHPMailer)
Message-Id: <829.b0363dbeb1f99466e462201cd15f0078@localhost/seenthis>
In-Reply-To: <794@localhost/seenthis>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit

Même en remplaçant tous les Message-Id de seenthis_notifier par Message-ID, le résultat est le même. Je pense la classe la manière dont on utilise la classe PHPMailer dans inc_envoyer_mail() du plugin facteur ne permet pas de spécifier un Message-ID (en tout cas ce header ne doit pas être passé dans les CustomHeader).

En ajoutant une exception dans inc_envoyer_mail') à ce niveau https://git.spip.net/spip-contrib-extensions/facteur/src/tag/v4.1.1/inc/envoyer_mail.php#L328 comme ceci, c'est bon, le header perso pour message id est bien posé comme il faut :

    if (!empty($headers)) {
        foreach($headers as $h){
            // verifions le format correct : il faut au moins un ":" dans le header
            // et on filtre le Content-Type: qui sera de toute facon fourni par facteur
            if (strpos($h,":")!==false
              AND strncmp($h,"Content-Type:",13)!==0) {
                if (strpos($h,"Message-ID:")===0) {
                    $facteur->MessageID = trim(explode(':', $h, 2)[1]);
                } else {
                    $facteur->AddCustomHeader($h);
                }
              }
        }
    }

Maintenant, reste à voir comment proposer le patch dans le plugin facteur, qui a bien bougé entre la version qu'on utilise et la dernière en date... (sur ce, j'ai faim ^^)

brunob commented 2 years ago

@biggrizzly si tu veux j'applique le patch à l'arrache en attendant que ça soit corrigé à la source ?

brunob commented 2 years ago

FTR, patch proposé dans le master du plugin facteur https://git.spip.net/spip-contrib-extensions/facteur/pulls/16 on verra pour faire un report dans la branche 4 qu'on utilise si c'est mergé.

En attendant, on peut déjà corriger seenthis sur le point Message-Id => Message-ID.

brunob commented 2 years ago

Voilà, le patch est intégré dans le plugin facteur et je viens de brancher seenthis sur la branche 4 https://git.spip.net/spip-contrib-extensions/facteur/src/branch/v4/paquet.xml afin qu'on en bénéficie.

@biggrizzly hésite pas à me signaler les possibles effets de bord de cette mise à jour (on était en version 4.1.1 et on est passé en 4.3.4).