OVH Cloud OVH Cloud

mail() envoie de l'utf-8...

3 réponses
Avatar
Sebastien
Bonjour,

J'utilise un formulaire de contact sur un site en utf-8. En toute
logique le contenu du mail est également codé en utf-8.

Le problème est que les clients mail Windows sont configurés pour
recevoir du latin-1 ou du Windows-1252. Tous les caractères spéciaux
sont donc illisibles dans le client de messagerie...

Connaissez-vous une parade ? PHP peut-il convertir utf-8 en latin 1
(iso-8859-1) ?

Sébastien

3 réponses

Avatar
ASM

Comme c'est toi qui génères le courriel, c'est à toi de mettre les
entêtes qui vont bien :

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

(Je fais suivre la discussion vers fr.comp.mail où c'est en charte)


Salut,

avant de courrir berzigue (que j'ai eu un mal fou à continuer ici)

puisqu'on est ici sur le php,
puisque je n'y connais rien
comment fais-tu çà en php
(code et toussa)

je suis tres *fortement* interressé (cf + bas)

PHP peut-il convertir utf-8 en latin 1 (iso-8859-1) ?


Oui, avec la lib iconv, mais c'est idiot puisque nécessairement tu
perdras tous les caractères n'appartenant pas à Latin-1.


surtout que j'ai un absolu besoin du cyrillique
(en plus du latin et du windows et par sécurité du roman)
(bref, l'utf-8 semble la panacèe)


PS: svp bien délayer la sauce :-)

--
Stephane Moriaux et son [moins] vieux Mac


Avatar
Sebastien
puisqu'on est ici sur le php,
puisque je n'y connais rien
comment fais-tu çà en php
(code et toussa)


Comme tu as pu le constater dans mon message original, je ne suis pas un
pro, donc à tester !

<?php
$destinataire = ''; // Adresse email du destinateire du
message

$sujet = 'Sujet du message';

$message = 'Ligne 1'."rn"; // Début du message
$message .= 'Ligne 2'."rn"; // suite du message...
$message .= 'Ligne 3'."rn"; // suite du message...

$en_tetes = 'MIME-Version: 1.0'."rn";
$en_tetes .= 'Content-Transfer-Encoding: 8bit'."rn";
$en_tetes .= 'Content-Type: text/plain; charset=utf-8'."rn";

if(mail($destinataire, $sujet , $message , $en_tetes))
{
echo 'Le message a été envoyé';
}
else
{
echo 'Erreur lors de l'envoi.';
}
?>

Sébastien

Avatar
ASM

comment fais-tu çà en php


Comme tu as pu le constater dans mon message original, je ne suis pas un
pro, donc à tester !


çà m'a l'air pas mal
Hop! archivé

Merci


--
Stephane Moriaux et son [moins] vieux Mac