Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Au secours !! Probleme incomprehensible sur mail HTML !

7 réponses
Avatar
Marie
Bonjour à tous,
J'utilise un script qui a pour but d'envoyer des messages au format html
Il fonctionne mais j'ai le bug suivant.
J'ai des morceaux de texte ou balises qui disparaissent dans le code html
final et cela de façon aleatoire.
Un coup, c'est un</td qui se ferme plus, une autre fois, c'est un <tr
parfois ca donne aussi <r, ca peut arriver qu'une lettre disparaisse aussi.
Bref c'est le bins !!! Je m'arrache les cheveux depuis 2 jours pour
identifier le bug.
Je vous donne le script utilisé pour ma fonction mail().


function mail_html($destinataire, $sujet , $messtxt, $messhtml , $from){

$expediteur = $from;
$reponse = $expediteur;

srand((double)microtime()*1000000);
$boundary = md5(uniqid(rand()));

$header ="From: $expediteur \n";
$header .="Reply-To: $reponse \n";
$header .="MIME-Version: 1.0\n";
$header .="Content-Type: multipart/alternative;boundary=$boundary\n";

$message = "\nThis is a multi-part message in MIME format.";
$message.="\n--$boundary\nContent-Type:
text/html;charset=\"iso-8859-1\"\n\n";
$message.= $messhtml;
$message.="\n--$boundary--\n end of the multi-part";

return mail($destinataire,$sujet,$message,$header);
}



Si quelqu'u pouvait m'éclairer. Merci !!

7 réponses

Avatar
Paul Delannoy
Marie a écrit:
Bonjour à tous,
J'utilise un script qui a pour but d'envoyer des messages au format html
Il fonctionne mais j'ai le bug suivant.
J'ai des morceaux de texte ou balises qui disparaissent dans le code html
final et cela de façon aleatoire.
Un coup, c'est un</td qui se ferme plus, une autre fois, c'est un <tr
parfois ca donne aussi <r, ca peut arriver qu'une lettre disparaisse aussi.
Bref c'est le bins !!! Je m'arrache les cheveux depuis 2 jours pour
identifier le bug.
Je vous donne le script utilisé pour ma fonction mail().
Si quelqu'u pouvait m'éclairer. Merci !!


Regarder s'il n'y a pas un nb de caractères par ligne à ne pas dépasser?
Un indice : chercher à savoir combien de caractères séparent le
dernier <newline> du caractère qui disparaît ?

Avatar
Marie
Je vais vérifier mais ca parrait bizarre
Cela pourrait il venir du fait que je suis en local sur un windows xp ?

"Paul Delannoy" a écrit dans le message de news:

Marie a écrit:
Bonjour à tous,
J'utilise un script qui a pour but d'envoyer des messages au format html
Il fonctionne mais j'ai le bug suivant.
J'ai des morceaux de texte ou balises qui disparaissent dans le code html
final et cela de façon aleatoire.
Un coup, c'est un</td qui se ferme plus, une autre fois, c'est un <tr
parfois ca donne aussi <r, ca peut arriver qu'une lettre disparaisse
aussi.
Bref c'est le bins !!! Je m'arrache les cheveux depuis 2 jours pour
identifier le bug.
Je vous donne le script utilisé pour ma fonction mail().
Si quelqu'u pouvait m'éclairer. Merci !!


Regarder s'il n'y a pas un nb de caractères par ligne à ne pas dépasser?
Un indice : chercher à savoir combien de caractères séparent le dernier
<newline> du caractère qui disparaît ?



Avatar
Francis Spiesser
Paul Delannoy a formulé ce jeudi :
Marie a écrit:
Bonjour à tous,
J'utilise un script qui a pour but d'envoyer des messages au format html
Il fonctionne mais j'ai le bug suivant.
J'ai des morceaux de texte ou balises qui disparaissent dans le code html
final et cela de façon aleatoire.
Un coup, c'est un</td qui se ferme plus, une autre fois, c'est un <tr
parfois ca donne aussi <r, ca peut arriver qu'une lettre disparaisse aussi.
Bref c'est le bins !!! Je m'arrache les cheveux depuis 2 jours pour
identifier le bug.
Je vous donne le script utilisé pour ma fonction mail().
Si quelqu'u pouvait m'éclairer. Merci !!


Regarder s'il n'y a pas un nb de caractères par ligne à ne pas dépasser?
Un indice : chercher à savoir combien de caractères séparent le dernier
<newline> du caractère qui disparaît ?


La "norme" c'est 72 caractères par ligne, il me semble

--
______
Francis (enlever .NIPUBNISOUMIS)
"Le présent n'est qu'un futur qui a vieilli"


Avatar
Olivier Miakinen

Je vais vérifier mais ca parrait bizarre
[ note : Marie parle du fait que des lignes trop longues auraient pu

provoquer le bug (¹) ]

Ça te paraît bizarre parce que les lignes que tu envoies sont courtes,
ou bien parce que tu ne comprends pas comment des lignes trop longues
pourraient avoir cet effet ?

Cela pourrait il venir du fait que je suis en local sur un windows xp ?


De mauvaises langues pourraient te dire que n'importe quel bug peut
survenir du fait d'utiliser Windows XP, mais sinon je ne vois pas
comment cela pourrait intervenir.

--
Olivier Miakinen
(¹) Pour ne plus citer à l'envers :
<http://www.giromini.org/usenet-fr/repondre.html>

Avatar
Olivier Miakinen

Regarder s'il n'y a pas un nb de caractères par ligne à ne pas dépasser?
Un indice : chercher à savoir combien de caractères séparent le dernier
<newline> du caractère qui disparaît ?


La "norme" c'est 72 caractères par ligne, il me semble


Pas exactement.

Il est vivement recommandé de ne pas dépasser 78 caractères par ligne,
ce qui fait donc 80 avec le rn. Les 72 caractères par ligne, c'est une
recommandation pour les nouveaux messages, afin qu'on puisse ajouter un
ou plusieurs niveaux de citation sans dépasser les 78, et donc sans
avoir besoin de reformater les lignes. Malheureusement, Outlook Express
qui est utilisé par un grand nombre de personnes a interprété cette
consigne de travers, ce qui fait que beaucoup font l'erreur.

À part cela, il est absolument obligatoire de ne pas dépasser 998
caractères par ligne, ce qui fait donc 1000 avec le rn. Si cette
limite est dépassée, alors oui il pourrait y avoir des caractères
tronqués pour cette raison.

--
Olivier Miakinen
Non, monsieur le juge, je vous le jure : jamais je n'ai cité
Bruxelles dans ma signature.


Avatar
WebRod
Bonjour,

le coup des rn c'est obligatoire??
Parce que j'avais eu exactement le même problème (cartactères qui
disparraissent) et je l'avais résolu en ajoutant ca avant le send mail:
$message=str_replace("rn","n",$message);

Je ne sais plus pour quelle raison, ni où j'ai lu qu'il fallait faire cela,
mais mon problème a été résolu immédiatement.

Rod
Avatar
Olivier Miakinen

le coup des rn c'est obligatoire??


Je suppose que c'est à mon article que tu réponds ? Merci de laisser le
strict minimum de l'article précédent pour que l'on sache à qui -- et
surtout à quoi -- tu réponds. Attention, il ne s'agit pas non plus de
tout recopier, formules de politesse et signatures comprises !

Voir : <http://www.giromini.org/usenet-fr/repondre.html>.

Parce que j'avais eu exactement le même problème (cartactères qui
disparraissent) et je l'avais résolu en ajoutant ca avant le send mail:
$message=str_replace("rn","n",$message);

Je ne sais plus pour quelle raison, ni où j'ai lu qu'il fallait faire cela,
mais mon problème a été résolu immédiatement.


Il y a deux choses différentes, ici. L'une est ce qui transite
réellement sur le réseau (et qui doit contenir CR=r *et* LF=n).
L'autre est la convention utilisée par ton langage de programmation
sur ton système.

Par exemple, sur Windows, les fichiers texte contiennent rn, mais la
plupart des langages de programmation, dont le C et le PHP, travaillent
sur des chaînes avec n seul. C'est au moment de l'envoi dans un fichier
ou sur le réseau que la transformation n -> rn se fait ; inversement,
lors de la réception d'un message, on a la transformation rn -> n.

Donc, si tu veux envoyer une chaîne qui contient en interne rn, la
transformation au moment de l'envoi donnera (¹) rn -> rrn, ce qui
est incorrect et pourrait poser des problèmes.

La norme dont je parlais (je pourrai retrouver le numéro de RFC au
besoin) se fiche pas mal de la représentation interne et compte donc
deux caractères par fin de ligne.

--
Olivier Miakinen
(¹) « donnera » ou « pourra donner ». En effet, les r pourraient être
supprimés avant conversion, ou les séquences rn pourraient être
reconnues comme telles : tout dépend du convertisseur.