[spip-dev] Bug mail d'alerte forum

Il y a un saut de ligne dans le sujet qui fait que les en-têtes s'arrêtent avant la fin, et se retrouvent du coup dans le corps du message.

Exemple :

From - Tue May 02 12:51:34 2006
X-Account-Key: account1
X-UIDL: UID352-1146323582
X-Mozilla-Status: 0001
X-Mozilla-Status2: 00000000
Return-Path: <www-data@vds120.sivit.org>
X-Original-To: nicolas@hoizey.com
Delivered-To: nicolas@hoizey.com
Received: by vds120.sivit.org (Postfix, from userid 33)
  id DCFB313B789; Tue, 2 May 2006 12:48:06 +0200 (CEST)

Nicolas Hoizey a écrit :

Il y a un saut de ligne dans le sujet qui fait que les en-têtes
s'arrêtent avant la fin, et se retrouvent du coup dans le corps du message.

Oui, j'avais déjà signalé cela, via le site web, mais je ne sais ce
qu'on en a fait, car "en général", ça nepose pas de problème. Dans mon
cas, je ne recevais carrément pas le mail :frowning:

Voici ma question a un technicien, et plus bas, comment j'ai résolu le
problème

Je voudrais plutot les $headers en code, donc le contenu exacte de $headers.

ca se précise en effet.
Je vous avais dit que certains passaient et d'autres pas. Une différence est dans le sujet
"Le logement social : quel enjeu ?"
codé parfois
Le logement social : quel enjeu ?

hors si je fais un test en reduisant le sujet
"Le logemen"
le mail passe pour toutes les adresses

De même si je fais un test sans header
spip_log("mail liste gti2 sans header".@mail($email, $sujet, $texte));
le mail passe avec le sujet normal ou raccourci.

Et donc, en regardant les sources des mails reçu avec le sujet complet, j'ai pour le mail envoyé à :
alainbb@easynet.be

[...]
Received: (qmail 15155 invoked by uid 0); 11 Jan 2006 10:23:01 -0000
Received: from b3.ovh.net (HELO 90plan.ovh.net) (213.186.33.53)
by 8.mail-out.ovh.net with SMTP; 11 Jan 2006 10:22:56 -0000
Received: by 90plan.ovh.net (Postfix, from userid 7302)
id 1B7CF4FE1; Wed, 11 Jan 2006 11:22:43 +0100 (CET)
To: alainbb@easynet.be
Subject: [Ecolo-WB] [forum] Le logement social : quel enjeu

=?ISO-8859-15?Q?=3F=20test=20=34=20mail=20non=20coup=E9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-15
Content-Transfer-Encoding: 8bit
From: gti2@ecolo-wb.be
Message-Id: <20060111102243.1B7CF4FE1@90plan.ovh.net>
Date: Wed, 11 Jan 2006 11:22:43 +0100 (CET)
X-DCC-sonic.net-Metrics: enlil.mail.be.easynet.net 1117; Body=1 Fuz1=1 Fuz2=1

(ceci est un message automatique)
[...]

et pour le même mail envoyé mais sans header à gti2@ecolo-wb.be

[...]
Received: by 90plan.ovh.net (Postfix, from userid 7302)
id 15AC14FDF; Wed, 11 Jan 2006 11:22:43 +0100 (CET)
To: gti2@ecolo-wb.be
Message-Id: <20060111102243.15AC14FDF@90plan.ovh.net>
Date: Wed, 11 Jan 2006 11:22:43 +0100 (CET)
From: ecolowb@90plan.ovh.net (ecolowb)
X-Ovh-Remote: 213.186.36.178 (8.mail-out.ovh.net)
X-Ovh-Local: 213.186.33.32 (mx0.ovh.net)
X-Spam-Check: fait|type 1&3|0.0|H 0.5
Subject: [gti2] [Ecolo-WB] [forum] Le logement social : quel enjeu
=?ISO-8859-15?Q?=3F=20test=20=34=20mail=20non=20coup=E9?=
X-DCC-dcc.uncw.edu-Metrics: nusku 1201; Body=1 Fuz1=1 Fuz2=1

(ceci est un message automatique)
[...]

Le "(ceci est un message automatique)" étant le début du mail
Et donc, on voit un saut de ligne probablement pas très orthodoxe.
Je ne connais malheureusement pas le formalisme d'écriture des mails, et pourquoi dans un cas ca passe et pas dans l'autre au grés des redirections, mais le problèmes à l'air d'être là.

Et donc, ca m'étonnerait que ca vienne de votre gestionnaire de mail (zut, j'y croyais pourtant) mais probablement du formatage du mail.
Bon, je vais continuer a envoyer les mails sans header, vu que ca passe.
Et voir en deuxième tant le formatage des mails et voir si ce n'est pas un bug répertorié chez spip.

bien à vous.

j'ai donc enlevé dans
inc_mail.php3 le header

# return @mail($email, $sujet, $texte, $headers);
    return @mail($email, $sujet, $texte);

parce qu'au moins ca marche :slight_smile:

Bonjour,
Alain BarBason wrote:

Nicolas Hoizey a écrit :

Il y a un saut de ligne dans le sujet qui fait que les en-têtes s'arrêtent avant la fin, et se retrouvent du coup dans le corps du message.

Oui, j'avais déjà signalé cela, via le site web, mais je ne sais ce
qu'on en a fait, car "en général", ça nepose pas de problème. Dans mon
cas, je ne recevais carrément pas le mail :frowning:

Voici ma question a un technicien, et plus bas, comment j'ai résolu le
problème

Je voudrais plutot les $headers en code, donc le contenu exacte de $headers.
     

ca se précise en effet.
Je vous avais dit que certains passaient et d'autres pas. Une différence est dans le sujet
"Le logement social : quel enjeu ?"
codé parfois
Le logement social : quel enjeu ?

hors si je fais un test en reduisant le sujet
"Le logemen"
le mail passe pour toutes les adresses

De même si je fais un test sans header
spip_log("mail liste gti2 sans header".@mail($email, $sujet, $texte));
le mail passe avec le sujet normal ou raccourci.

Et donc, en regardant les sources des mails reçu avec le sujet complet, j'ai pour le mail envoyé à :
alainbb@easynet.be

[...]
Received: (qmail 15155 invoked by uid 0); 11 Jan 2006 10:23:01 -0000
Received: from b3.ovh.net (HELO 90plan.ovh.net) (213.186.33.53)
by 8.mail-out.ovh.net with SMTP; 11 Jan 2006 10:22:56 -0000
Received: by 90plan.ovh.net (Postfix, from userid 7302)
id 1B7CF4FE1; Wed, 11 Jan 2006 11:22:43 +0100 (CET)
To: alainbb@easynet.be
Subject: [Ecolo-WB] [forum] Le logement social : quel enjeu

=?ISO-8859-15?Q?=3F=20test=20=34=20mail=20non=20coup=E9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-15
Content-Transfer-Encoding: 8bit
From: gti2@ecolo-wb.be
Message-Id: <20060111102243.1B7CF4FE1@90plan.ovh.net>
Date: Wed, 11 Jan 2006 11:22:43 +0100 (CET)
X-DCC-sonic.net-Metrics: enlil.mail.be.easynet.net 1117; Body=1 Fuz1=1 Fuz2=1

(ceci est un message automatique)
[...]

et pour le même mail envoyé mais sans header à gti2@ecolo-wb.be

[...]
Received: by 90plan.ovh.net (Postfix, from userid 7302)
id 15AC14FDF; Wed, 11 Jan 2006 11:22:43 +0100 (CET)
To: gti2@ecolo-wb.be
Message-Id: <20060111102243.15AC14FDF@90plan.ovh.net>
Date: Wed, 11 Jan 2006 11:22:43 +0100 (CET)
From: ecolowb@90plan.ovh.net (ecolowb)
X-Ovh-Remote: 213.186.36.178 (8.mail-out.ovh.net)
X-Ovh-Local: 213.186.33.32 (mx0.ovh.net)
X-Spam-Check: fait|type 1&3|0.0|H 0.5
Subject: [gti2] [Ecolo-WB] [forum] Le logement social : quel enjeu
=?ISO-8859-15?Q?=3F=20test=20=34=20mail=20non=20coup=E9?=
X-DCC-dcc.uncw.edu-Metrics: nusku 1201; Body=1 Fuz1=1 Fuz2=1

(ceci est un message automatique)
[...]

Le "(ceci est un message automatique)" étant le début du mail
Et donc, on voit un saut de ligne probablement pas très orthodoxe.
Je ne connais malheureusement pas le formalisme d'écriture des mails, et pourquoi dans un cas ca passe et pas dans l'autre au grés des redirections, mais le problèmes à l'air d'être là.

Et donc, ca m'étonnerait que ca vienne de votre gestionnaire de mail (zut, j'y croyais pourtant) mais probablement du formatage du mail.
Bon, je vais continuer a envoyer les mails sans header, vu que ca passe.
Et voir en deuxième tant le formatage des mails et voir si ce n'est pas un bug répertorié chez spip.

bien à vous.
   
j'ai donc enlevé dans
inc_mail.php3 le header

# return @mail($email, $sujet, $texte, $headers);
  return @mail($email, $sujet, $texte);
   
parce qu'au moins ca marche :slight_smile:

C'est assez délicat à analyzer comme problème, on a pas d'information sur ton système et en particulier quel est le MTA (serait-ce qmail ?)
Par ailleurs, il serait intéressant de voir le log qui est fait vers le début de function envoyer_mail() dans inc_mail.php3 en même temps que le résultat.

En tout cas, le problème n'existant que lorsque le sujet est trop long , il est forcément lié à
        $sujet = mb_encode_mimeheader($sujet, $charset, 'Q');
effectué avant l'envoi.
Celui-ci effectue le "line-folding" afin que la longueur des lignes de header ne dépasse pas 75 (?) octets.
Pour ce faire, il insère par défaut des "\r\n" , apparemment si-possible là où il trouve un espace.

Le problème pourrait être que certains MTA reconvertissent automatiquement les "\n" en "\r\n" produisant donc ici pour ces "line-folding" des "\r\r\n" ... serait-ce ta ligne blanche ?

Pourrais-tu faire un essai en remettant les headers mais en modifiant :
        $sujet = mb_encode_mimeheader($sujet, $charset, 'Q');
en
        $sujet = mb_encode_mimeheader($sujet, $charset, 'Q', "\n");
Il n'utilisera alors pas le défaut "\r\n" mais seulement "\n" pour ces "line-folding"

Ma paire de centimes.

Le problème pourrait être que certains MTA reconvertissent automatiquement les "\n" en "\r\n" produisant donc ici pour ces "line-folding" des "\r\r\n" ... serait-ce ta ligne blanche ?

Pourrais-tu faire un essai en remettant les headers mais en modifiant :
        $sujet = mb_encode_mimeheader($sujet, $charset, 'Q');
en
        $sujet = mb_encode_mimeheader($sujet, $charset, 'Q', "\n");
Il n'utilisera alors pas le défaut "\r\n" mais seulement "\n" pour ces "line-folding"

Je pense effectivement que ça vient de là, j'ai eu le même souci avec d'autres applis PHP.

-Nicolas

> $sujet = mb_encode_mimeheader($sujet, $charset, 'Q', "\n");
> Il n'utilisera alors pas le défaut "\r\n" mais seulement "\n" pour ces
> "line-folding"

Je pense effectivement que ça vient de là, j'ai eu le même souci avec
d'autres applis PHP.

J'ai appliqué cette idée, merci de confirmer que ça fonctionne (ici et sur
http://trac.rezo.net/trac/spip/ticket/252 )

-- Fil

J'ai appliqué cette idée, merci de confirmer que ça fonctionne (ici et sur
http://trac.rezo.net/trac/spip/ticket/252 )

Apparemment ça marche, merci !

-Nicolas

Nicolas Hoizey a écrit :

J'ai appliqué cette idée, merci de confirmer que ça fonctionne (ici et sur
http://trac.rezo.net/trac/spip/ticket/252 )

Apparemment ça marche, merci !

-Nicolas

En effet, ça enlève le retour de ligne, mais ça ne résoud pas mon
problème... Et donc, mon bug n'est pas ce retour de ligne dans le
header... zut alors

Alain BarBason a écrit :

Nicolas Hoizey a écrit :

J'ai appliqué cette idée, merci de confirmer que ça fonctionne (ici et sur
http://trac.rezo.net/trac/spip/ticket/252 )

Apparemment ça marche, merci !

-Nicolas

En effet, ça enlève le retour de ligne, mais ça ne résoud pas mon
problème... Et donc, mon bug n'est pas ce retour de ligne dans le
header... zut alors

Et bien si quand même, simplement j'ai pas reçu tous mes mails de test
en même temps.

Ca me parait donc bien ce qu'il fallait faire.