[Perl] Problème avec le module Encode

Dominique Asselineau asseline at telecom-paristech.fr
Lun 20 Nov 15:11:37 CET 2017


Olivier Mengué wrote on Mon, Nov 20, 2017 at 10:03:28AM +0100
> La première question à te poser, c'est pourquoi ton code fait passer
> l'adresse e-mail par l'encodage MIME-Q : c'est là que me semble être le
> bug...
> 
> En effet, la doc de Encode::MIME::Header (que j'ai trouvée en lisant la doc
> de Encode::Supported que j'ai trouvée en lisant la doc de Encode) indique
> dans le paragraphe "ABSTRACT":
> 
> it cannot be used directly for the whole header with the field name or for
> > the structured header fields like From, To, Cc, Message-Id, etc...

Justement, la doc de Encode::MIME::Header correspondant à la version
2.60 de Encode qui venait avec Perl 5.20.2, ne dit rien de tout ça.
Par contre elle dit dans le 2e paragraphe de la DESCRIPTION

| The parts that RFC 2047 forbids to encode are left as is

et le RFC2047 indique

| 5. Use of encoded-words in message headers [...]  These are the ONLY
|locations where an 'encoded-word' may appear.  In particular: + An
|'encoded-word' MUST NOT appear in any portion of an 'addr-spec'.

Sachant que addr-spec est défini dans la RFC822 comme

| 6.1.  SYNTAX [...]  addr-spec = local-part "@" domain ; global
|address

Les exemples que j'ai donnés dans mon précédent message et qu'on
trouvent ci-dessous, montrent clairement que Encode 2.60 respecte ce
qu'il y a dans sa doc, et que la version 2.80.01 a tout aussi
clairement changer la règle du jeu.


>  Donc le bug n'est pas dans Encode::MIME::Header, mais ailleurs.

Je n'avais d'ailleurs pas parlé de bug, seulement de changement de
comportement visiblement délibéré du module Encode dans sa version
2.80.01 (Perl 5.24).

à l'origine je faisais ça avec MIME::Words::encode_mimeword qu'il
fallait utiliser uniquement sur la partie à encoder et j'aurais dû
rester sur la même ligne lorsque je suis passé à
Encode::encode( 'MIME-Q' ...).

Pour contourner le problème dans l'urgence j'ai voulu installer la
version 2.60 de Encode dans un rép. spécifique que j'ai cherché à
"unshifté" dans @INC mais Perl a refusé de le prendre en compte.  Du
coup je me suis résigné à modifier mon code.

Dominique

> 
> Olivier.
> 
> Le 16 novembre 2017 à 14:43, Dominique Asselineau <
> asseline at telecom-paristech.fr> a écrit :
> 
> > Bonjour,
> >
> > Je rencontre une difficulté avec le module Encode version 2.80_01,
> > celle fournie avec Perl 5.24, version de Perl fournie dans Debian 9
> > (stretch).
> >
> > Dans la version 2.60 de Encode (Perl 5.20), l'encodage MIME-Q se fait
> > à minima, tandis que dans la version 2.80.01, tout y passe.
> >
> > Voici les 2 résultats que j'obtiens avec la commande
> >
> > $ perl -e 'use utf8; use Encode encode; print $Encode::VERSION.":
> > ".encode( "MIME-Q", "Eugène Letest <letest\@labas.fr>").$/'
> >
> > 2.60: =?UTF-8?Q?Eug=C3=A8ne=20Letest=20?=<letest at labas.fr>     # bon pour
> > moi
> > 2.80_01: =?UTF-8?Q?Eug=C3=A8ne=20Letest=20=3Cletes?=
> > =?UTF-8?Q?t=40labas=2Efr=3E?=   # c'est la surprise
> >
> > Dans la version 2.80.01, une espace a été ajoutée dans la partie
> > adresse.  De toute manière, il me semble que la partie adresse ne peut
> > être MIME-encodée.
> >
> > Avec la version 2.60 de Encode l'envoi des mails ne posait pas
> > problème mais ça ne passe plus avec la version 2.80.01, même en
> > supprimant l'espace superflue.
> >
> > Auriez-vous une idée ?
> >
> > Merci.
> >
> > Dominique
> > --
> > _______________________________________________
> > Perl mailing list
> > Perl at mongueurs.net
> > http://listes.mongueurs.net/mailman/listinfo/perl
> >

> _______________________________________________
> Perl mailing list
> Perl at mongueurs.net
> http://listes.mongueurs.net/mailman/listinfo/perl


-- 


Plus d'informations sur la liste de diffusion Perl