8797 sujets

Développement web côté serveur, CMS

Bonjour,

Alors voilà, depuis ce matin je m'arrache les cheveux sur le problème suivant :
J'ai une appli qui envoi des mails, ces mails apparaissent très bien sur Gmail mais sont vides sur les adresse hotmail ou sur outlook.

Voici mon code d'envoi de mail :


$boundary = "-----=".md5(uniqid(mt_rand()));

$sujet = "***** - ".$_GET['ttl'];

$header = "From: \"*****\" <*****.*****@gmail.com>\n";
$header.= "Cc: \n";
$header.= "Bcc: \n";
$header.= "Reply-to: \"".$_GET['nm']."\" <".$_GET['fr'].">\n";
$header.= "X-Priority: 3\n";
$header.= "MIME-Version: 1.0\n";
$header.= "X-Mailer: PHP/".phpversion()."\n" ;
$header.= "Date: ".date("D, j M Y H:i:s -0600")."\n"; 
$header.= "Content-Type: multipart/alternative; boundary=\"".$boundary."\"";

$message = "This is a multi-part message in MIME format.\n"; 

$message.= "\n--".$boundary."\n";
$message.="Content-Type: text/plain;\n charset=\"ISO-8859-1\"\n";
$message.="Content-Transfer-Encoding: 8bit\n";

$message.= $_GET['nm']." à voulu vous faire partager ce lien :\n\n";
$message.= $_GET['lnk']."\n";
$message.= "Ce lien vous à été diffusé via *****\n";

$message.= "\n--".$boundary."\n";
$message.="Content-Type: text/html; charset=\"ISO-8859-1\"\n";
$message.="Content-Transfer-Encoding: 8bit\n";

$message.= "<html><head></head><body>\n";
$message.= "<h1><a href=\"http://*****.fr\" title=\"*****\"><img style=\"border : none;\" src=\"*****/mail/logo.png\" alt=\"*****\" /></a></h1>\n";
$message.= "<p><a style=\"color : #369;text-decoration : none;\" href=\"mailto:".$_GET['fr']."\">".$_GET['nm']."</a> à voulu vous faire partager ce lien :</p>\n";
$message.= "<p><a style=\"color : #369;text-decoration : none;\" href=\"".$_GET['lnk']."\" title=\"".$_GET['ttl']."\">".$_GET['ttl']."</a></p>\n";
$message.= "<p>Ce lien vous à été diffusé via <a style=\"color : #369;text-decoration : none;\" href=\"*****\" title=\"*****\">*****</a>!</p>\n";
$message.= "</body></html>\n";

$message.= "\n--".$boundary."--\n";

mail($_GET['to'], $sujet, $message, $header);


Est ce que quelqu'un peut me dire ou est l'erreur?

J'ai bien fait un recherche sur le forum, il y avait apparement une personne avec exactement le même problème mais pour moi le problème vient apparemment d'autre part...

Si quelqu'un voit, un grand merci!
Modifié par DuMe (30 May 2008 - 18:33)
le problème vient de ton séparateur multipart :$message.= "\n--".$boundary."\n";
je sais plus trop exactement pourquoi, mais d'après mes souvenirs cela viens du fait que tu envoie via linux sur du windows
et y a une histoire de : CR et LF en cause

je vois ou tu as été chercher ce code Smiley lol

utilise plutôt pear mail : http://pear.php.net/package/Mail/
J'ai été chercher le code un peu partout, je vais travailler un lus sur cette histoire de CR LF et ensuite j'irai voir en php5 si ca ne donne rien.
php.net le site ou ta choppé le code Smiley rolleyes Smiley cligne
sinon le CR LF est la signature windows de fin de ligne
sous linux tu a que le CR
mais linux sait interprété les 2 , windows non !!!

pour etre précis pour windows il faut : CR +LF pour linux il faut seulement CR !
Modifié par dotmessy (31 May 2008 - 17:28)
Oui merci, j'ai vu un peu deja pour le CR LF.
Pour le code, je me suis inspiré dusiteduzero et d'un autre billet sur ce forum.