Page 1 sur 1

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

Posté : 29 juil. 2009, 15:56
par murdok
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

Posté : 29 juil. 2009, 17:37
par niuxe
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 ?

Posté : 29 juil. 2009, 19:05
par Sékiltoyai
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.

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

Posté : 28 août 2009, 13:53
par murdok
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

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

Posté : 28 août 2009, 14:22
par mouins
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