OVH Cloud OVH Cloud

Caractères spéciaux et mail()

17 réponses
Avatar
*oo*
Bonjour à tous !

J'avance à petits pas dans mon codage de la fonction mail (qui cela dit
avait apparemment un problème depuis le serveur...).

Bref, maintenant je reçois bien tout mais les caractères spéciaux sont en
hiéroglyphes : "é" pour un "é".

Je sais que le problème à souvent été évoqué, mais dans le peu de temps que
j'avais pour faire mes recherches, je n'ai pas trouvé de solution.

Quelqu'un peut-il m'aider siouplait ? Merci !

ZzF

7 réponses

1 2
Avatar
Thibaut Allender
On 16/11/2004 11:06, denisb wrote :
et plus complétement :

$entetes = "From: MOIrn";
$entetes .= "Cc: ";
$entetes .= "Bcc: ";
$entetes .= "MIME-Version: 1.0rn";
$entetes .= "Content-Type: text/plain;charset=iso-8859-1rn";
$entetes .= "Content-Transfer-Encoding: 8bitrn";



avec des n au lieu des rn, c'est encore mieux
j'imagine que c'est un serveur de type unix qui va digerer tout ca :)


--
thibaut allender | freelance | http://capsule.org
Avatar
newdb
Thibaut Allender
wrote:
avec des n au lieu des rn, c'est encore mieux
j'imagine que c'est un serveur de type unix qui va digerer tout ca :)



alors là, je n'ai **jamais** compris comment utiliser
ces fichus r et n !!!
perso, je code sous mac (en vrac avec bbedit), j'envoie sur un serveur
unix, et j'utilise le double retour : rn.
parfois (?) j'ai des affichages de source avec double saut de ligne,
parfois avec retour de ligne 'normal'.
mais j'ai remarqué que sans les 2, j'avais (souvent ?) des sources
illisibles... (dans des boucles while affichant des <select><option>)

et de plus...
<cite>
Note
Vous devez utiliser les caractères rn pour séparer les en-têtes bien
que quelques MTA Unix fonctionnent avec uniquement un caracètre de
nouvelle ligne ( n ).
</cite>
in <http://www.nexen.net/docs/php/annotee/function.mail.php>


--
@@@@@
E -00 et toc !
' `) /
|_ =="
Avatar
Thibaut Allender
On 16/11/2004 12:02, denisb wrote :

alors là, je n'ai **jamais** compris comment utiliser
ces fichus r et n !!!



n seulement = unix
rn = windows
r seulement = mac

et de plus...
<cite>
Note
Vous devez utiliser les caractères rn pour séparer les en-têtes bien
que quelques MTA Unix fonctionnent avec uniquement un caracètre de
nouvelle ligne ( n ).
</cite>
in <http://www.nexen.net/docs/php/annotee/function.mail.php>



tiens, etrange
faut croire que sendmail aime bien les n alors, parce que ca ne m'a
jamais causé de problème
faudrait essayer avec postfix pour voir

--
thibaut allender | freelance | http://capsule.org
Avatar
loufoque
*oo* a dit le 16/11/2004 09:31:

Bref, maintenant je reçois bien tout mais les caractères spéciaux sont en
hiéroglyphes : "é" pour un "é".



Les données envoyées sont en UTF-8 et vous tentez de les lire en ISO-8859-1.
Si vous les rédigez avec un éditeur texte, régler celui-ci pour écrire
avec l'encodage choisi. Si vos données viennent de formulaires sur des
pages web en UTF-8, soit convertissez soit spécifier un bon encodage
dans les entêtes du message.
Avatar
Olivier Miakinen
Le 16/11/2004 09:31, *oo* a écrit :

Bref, maintenant je reçois bien tout mais les caractères spéciaux sont en
hiéroglyphes : "é" pour un "é".



C'est que tu envoies de l'utf-8 (c'est bien, ça permet de traiter tous
les cas) mais en le déclarant comme de l'iso-8859-1 (c'est mal) ou sans
rien réclarer du tout (c'est pire).

Rajoute ceci dans tes entêtes :

MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

[ copie et suivi positionnés vers fr.comp.mail ]

--
Olivier Miakinen
Non, monsieur le juge, je vous le jure : jamais je n'ai cité
Bruxelles dans ma signature.
Avatar
Olivier Miakinen
Le 16/11/2004 11:06, denisb a écrit :

et plus complétement :

$entetes = "From: MOIrn";
$entetes .= "Cc: ";
$entetes .= "Bcc: ";
$entetes .= "MIME-Version: 1.0rn";
$entetes .= "Content-Type: text/plain;charset=iso-8859-1rn";
$entetes .= "Content-Transfer-Encoding: 8bitrn";



Justement pas iso-8859-1, puisqu'il envoie de l'utf-8 !

$entetes = "From: MOIrn";
$entetes .= "Cc: ";
$entetes .= "Bcc: ";
$entetes .= "MIME-Version: 1.0rn";
$entetes .= "Content-Type: text/plain; charset=utf-8rn";
$entetes .= "Content-Transfer-Encoding: 8bitrn";


--
Olivier Miakinen
Non, monsieur le juge, je vous le jure : jamais je n'ai cité
Bruxelles dans ma signature.
Avatar
Pierre Goiffon
"Olivier Miakinen" <om+ a écrit dans le message de
news:cncrc9$7li$
Justement pas iso-8859-1, puisqu'il envoie de l'utf-8 !



Hum, sans vouloir insister... C'est de l'UTF-8 cette fois mais il faudrait
_vraiment_ que *oo* soit certain qu'il maitrise le charset de bout en
bout... Donc : bien lire les docs et comprendre ce qu'il faut faire,
pourquoi, etc.

Par ailleurs il existe encore quelques passerelles qui ne laissent pas
passer le 8 bits (sisisi). Bref, lire les docs et comprendre, ensuite agir à
bon escient plutôt que d'ajouter des lignes de code au petit bonheur la
chance.
1 2