Mail php ok sous outlook mais pas ailleurs

[Résolu]
Signaler
Messages postés
2
Date d'inscription
samedi 22 septembre 2007
Statut
Membre
Dernière intervention
26 septembre 2007
-
Messages postés
2
Date d'inscription
samedi 22 septembre 2007
Statut
Membre
Dernière intervention
26 septembre 2007
-
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

Messages postés
2
Date d'inscription
samedi 22 septembre 2007
Statut
Membre
Dernière intervention
26 septembre 2007

Hello,

merci, entre temps j'ai trouvé

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

devait devenir

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

et depuis ça fonctionne nickel

merci
Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5
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.