Formulaire mail qui ne fonctionne pas que sous mac...

Eléphanteau du PHP | 39 Messages

29 juil. 2009, 15:56

Bonjour à tous,

voila j'utlise un script d'envoie de mail qui envoie les informations depuis flash à php. Aucun souci sur tout les clients mail excepter sur Mac mail qui affiche une page blanche!!
je ne vois pas ce qui cloche peut etre l'encodage du mail?
voici le code:
<?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 <br />
        $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']))$messageTexte = $_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($erreurPHP != "") echo utf8_encode("erreurPHP=".$erreurPHP);
else
{
	$to = "[email protected]";
	$sujet = decoder($sujet);
	$expediteur = decoder($expediteur);
	$messagehtml = decoder($messageHtml);
	$messageTexte = utf8_decode($messageTexte);
	
	 //-----------------------------------------------
     //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 .= $messageTexte."\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);
}
?>
merci

Eléphant du PHP | 453 Messages

29 juil. 2009, 17:37

Hello,

La mise en page de $messageHtml est comment ? À base d'élements table avec style en ligne ou en css ? Comment est l'affichage chez toi en local après soumission du formulaire ?

ViPHP
ViPHP | 5924 Messages

29 juil. 2009, 19:05

Déjà, de un, dans les headers on utilise la séquence "\r\n" pour les délimitations et non "\n".
Modifie ça et réessaye.

Eléphanteau du PHP | 39 Messages

28 août 2009, 13:53

Bonjour à tous

j'ai enfin le retour de mon client.
toujours le meme soucis, ce n'est pas fait en tableau et j'ai testé en utilisant la séquence \r\n et meme souci.
Je ne vois pas trop ce qui peux coincer.

merci

Petit nouveau ! | 5 Messages

28 août 2009, 14:22

Mets ca dans ton fichier php pour voir deja si le probleme viens du code ou pas
<?
@mail('ton@mail', 'test formulaire', 'test '.date('d/m/Y H:i:s')); // met ton adresse
$fp = fopen('test.txt', 'w'); // meme si le mail ne passe pas tu devrais trouver un fichier test.txt ou il y a la date
fwrite($fp, 'test '.date('d/m/Y H:i:s'));
fclose($fp);
?>
j'attends ta reponse pour voir l'etape suivante