[resolu]/PHP Probleme d'accent dans mon script

Hello,

j’ai un formulaire d’envoi de mail en Html/PHP et j’ai un soucis…

Jusqu’ici tt mes mail passai sans probleme avec les “é”, “è” …

Hors je vien de m’apercevoir que tout mes “e” avec accent se transforme en “�”, par exemple : Téléphone = T�l�phone dans le mail que je reçois…

D’ou cela peut il venir???

Essaye de foutre ça comme entête :

Charset: iso-8859-15

faudrait pas également utiliser les &eacute ?

Merci pour ton aide mais j’ai toujours le mm probleme …

Bon alors, je veins de m’apercevoir que lorsque je ne joind pas de fichier a mon mail, les accents marchent très bien…

j’ai donc un soucis avec mon code PHP au niveau de l’insertion d’un fichier joint…

if (is_uploaded_file($attach)) {
    $file = fopen($attach, "r");
    $contents = fread($file, $attach_size);
    $encoded_attach = chunk_split(base64_encode($contents));
    fclose($file);

   $entetes.= "MIME-version: 1.0\n";
   $entetes.= "Content-type: multipart/mixed; ";
   $entetes.= "boundary=\"Message-Boundary\"\n";
   $entetes.= "Content-transfer-encoding: 7BIT\n";

    $body_top = "--Message-Boundary\n";
    $body_top .= "Content-type: text/plain; charset=US-ASCII\n";
    $body_top .= "Content-transfer-encoding: 7BIT\n";
    $body_top .= "Content-description: Mail message body\n\n";

    $msg .= "\n\n--Message-Boundary\n";
    $msg .= "Content-type: $attach_type; name=\"$attach_name\"\n";
    $msg .= "Content-Transfer-Encoding: BASE64\n";
    $msg .= "Content-disposition: attachment; filename=\"$attach_name\"\n\n";
    $msg .= "$encoded_attach\n";
    $msg .= "--Message-Boundary--\n";
  }
	

si ça vous dit quelque chose, merci de votre aide…

erf, quelle buse, j’veins de voir ou etait le probleme… c’est ici :


$body_top .= "Content-type: text/plain; charset=US-ASCII\n";

a remplcer par :


 $body_top .= "Content-type: text/plain; charset=iso-8859-1\n";

Voila ^^

Merci encore… :slight_smile:

Salut Tanktrasher,
Même pbm que toi pour les accents, lié au charset du php. Ta solution marche, mais pas pour le sujet du mail dans mon cas. Je n’arrive pas à jouer sur le header pour corriger les accents. As-tu eu le même pbm et comment l’as-tu résolu ?

Merci beaucoup déjà de m’avoir lu et peut être de me répondre…

Le sujet du mail doit être en ASCII standard. Il te faut échapper tous les accents (etc). Consulte la documentation de la fonction mail de php.

Merci pour la réactivité immédiate, j’appécie beaucoup.
Alors je vais suivre tes conseils concernant la doc de la fonction mail de php. Mais si j’ai réussi à changer le charset du body (actuellement en UTF-8), je n’arrive pas à changer celui du sujet dans le header sans concerver les fonctions primordiales du header…

Est-ce que cela a du sens pour quelqu’un ?

Encore merci.

Tu es allé lire la doc? tu as essayé de regarder les commentaires (ou la RFC?) dedans il est précisé que les entêtes doivent être codées en ASCII US.

moralité: ne cherche pas à les foutre en UTF8. Je sais que c’est chiant c’est à php de le faire normalement.

Oui je suis en train de me documenter.
Simplement avec le code que je possède, je ne parviens pas à cibler l’emplacement où je dois spécifier le codage de l’entête.

Aussi je dois préciser que mon script permet l’envoi d’une pièce jointe, ce qui semble contraindre le code de l’entête (header).

Voilà à quoi ressemble la partie concernée :

function _build_attachement()
{
$this->boundary= "------------" . md5( uniqid("myboundary") ); // TODO : variable bound
$headers .= "Content-type: text/html;charset=ISO-8859-9\n";
$this->headers .= "MIME-Version: 1.0\nContent-Type: multipart/mixed;\n boundary=\"$this->boundary\"\n\n";
$this->fullBody = "This is a multi-part message in MIME format.\n–$this->boundary\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 7bit\n\n" . $this->body ."\n";
$sep= chr(13) . chr(10);

    $ata= array();
    $k=0;

Alors j’ai essayé d’introduire différent charset au header mais ça fait foiré ma pièce jointe du coup.

Je patauge un peu là.

Je te remercie pour ton suivi, fidèle inconnu : sans nom