Mail php ok sous outlook mais pas ailleurs

Résolu
kaochris Messages postés 2 Date d'inscription samedi 22 septembre 2007 Statut Membre Dernière intervention 26 septembre 2007 - 25 sept. 2007 à 21:59
kaochris Messages postés 2 Date d'inscription samedi 22 septembre 2007 Statut Membre Dernière intervention 26 septembre 2007 - 26 sept. 2007 à 19:12
Bonsoir,

j'ai un énorme problème php et après beaucoup de tests et recherches je ne parviens toujours pas à la résoudre.
Ce week end en fouillant sur le net, j'ai suivi un tutoriel qui m'a permis de créer un fichierphp qui génère un mail depuis des données reçues d'un formulaire en flash. Une fois terminé, un mail de ocnfirmation doit être reçu par la personne qui l'a remplit.
Dans le code suivant, le mail arrive impeccablement, mis en forme comme je le souhaite. Cela dis, dans certains mail readers, le message apparait blanc... Je ne trouve aucune solution. Dans mon outlook tout arrive parfaitement, mais pas dans un client comme "mail" sur MacOs ou le mail arrive vide.

Pourriez vous m'aider svp ?

C'est un peu à double tranchant comme je ne suis pas du tout habitué à php, juste suivi un tutoriel sur mediabos en adaptant  à mon cas

Merci d'avance,

kaochris

voici le code php

<?php
function decoder($texte){
        $texte = utf8_decode($texte); // converti en iso-8859-1
        $texte = stripslashes($texte); // élimine les anti-slashs d'échappement
        $texte = nl2br($texte); // converti les retours  en

        $texte = trim($texte); // élimine les '\n', '\r', '\t' etc
        return $texte;
}
 
$erreurPHP="";

if(isset($_POST['sujet']))$sujet = $_POST['sujet'];
else $erreurPHP .= "Variable 'sujet' non transmise\n";
 
if(isset($_POST['messageHtml']))$messageHtml = $_POST['messageHtml'];
else $erreurPHP .= "Variable 'message' non transmise\n";



if(isset($_POST['messageText']))$messageText = $_POST['messageText'];
else $erreurPHP .= "Variable 'message' non transmise\n";
 
if(isset($_POST['expediteur']))$expediteur = $_POST['expediteur'];
else $erreurPHP .= "Variable 'expediteur' non transmise\n";
 
if(isset($_POST['mailReponse']))$mailReponse = $_POST['mailReponse'];
else $erreurPHP .= "Variable 'mailReponse' non transmise\n";



if(isset($_POST['recipient']))$mailReponse = $_POST['recipient'];
else $erreurPHP .= "Variable 'recipient' non transmise\n";



 
if($erreurPHP != "") echo utf8_encode("erreurPHP=".$erreurPHP);
else
{
 $to = decoder($recipient);
 $sujet = decoder($sujet);
 $expediteur = decoder($expediteur);
 $messagehtml = decoder($messageHtml);
 $messageText = utf8_decode($messageText);
 
  //-----------------------------------------------
     //GENERE LA FRONTIERE DU MAIL ENTRE TEXTE ET HTML
     //-----------------------------------------------



     $frontiere = '-----=' . md5(uniqid(mt_rand()));



     //-----------------------------------------------
     //HEADERS DU MAIL
     //-----------------------------------------------



     $headers = 'From: '.$expediteur.' <'.$mailReponse.'>'."\n";
     $headers .= 'Return-Path: <'.$mailReponse.'>'."\n";
     $headers .= 'MIME-Version: 1.0'."\n";
     $headers .= 'Content-Type: multipart/alternative; boundary="'.$frontiere.'"'."\n";
  $headers .= 'Content-Transfer-Encoding: 8bit';



     //-----------------------------------------------
     //MESSAGE TEXTE
     //-----------------------------------------------
     //$message = 'This is a multi-part message in MIME format'."\n\r";



     $message = '--'.$frontiere."\n";
     $message .= 'Content-Type: text/plain; charset=UTF-8'."\n";
     $message .= 'Content-Transfer-Encoding: 8bit'."\n\r\n\r";
     $message .= $messageText."\n";



    
  //-----------------------------------------------
     //MESSAGE HTML
     //-----------------------------------------------
     $message .= '--'.$frontiere."\n";
     $message .= 'Content-Type: text/html; charset=UTF-8'."\n";
     $message .= 'Content-Transfer-Encoding: 8bit'."\n\n";
     $message .= $messageHtml."\n\n";



     $message .= '--'.$frontiere."\n";



 $mail_OK = mail($to, $sujet, $message, $headers) ;
 
 
 if (!$mail_OK)
 {
  $erreurPHP .= "Problème lors de l'envoi du mail";
  
 }
 echo utf8_encode("erreurPHP=".$erreurPHP);
}
?>

2 réponses

kaochris Messages postés 2 Date d'inscription samedi 22 septembre 2007 Statut Membre Dernière intervention 26 septembre 2007
26 sept. 2007 à 19:12
Hello,

merci, entre temps j'ai trouvé

$message .= '--'.$frontiere."\n";

devait devenir

$message .= '--'.$frontiere.'--'."\n";

et depuis ça fonctionne nickel

merci
3
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
26 sept. 2007 à 18:09
Hello,

dsl je ne vais pas lire ton code, mais ton pb vient très certainement des headers. essaie par exemple \r\n au lieu de \n.
0
Rejoignez-nous