Mail HTML avec image en PJ

Shenron42000 Messages postés 46 Date d'inscription vendredi 8 octobre 2004 Statut Membre Dernière intervention 28 janvier 2009 - 20 déc. 2006 à 16:35
pingoin33 Messages postés 1 Date d'inscription mercredi 23 avril 2008 Statut Membre Dernière intervention 24 avril 2008 - 24 avril 2008 à 00:27
Bonjour,

Voila, ca fait plusieurs jours que je planche dessus et pas moyen d'y arriver.

Le script à pour but de récupérer le code HTML qui provient d'un éditeur WYSIWYG, et de l'envoyer par mail au format HTML avec les images en PJ.

Il faut donc pour ca, remplacer chaque URL par cid : monimage(et un numero).

Voila, le script :

                    $sms = stripslashes($_POST["wysiwyg"]);
                   
                    //En-tête
                    $delimiteur = "-----=".md5(uniqid(rand()));
                    $entete = "MIME-Version: 1.0\r\n";
                    $entete .= "Content-Type: multipart/related; boundary="$delimiteur"\r\n";
                    $entete .= "\r\n";
                    //Message
                    $msg = "Ceci est un message au format MIME 1.0 multipart/mixed.\r\n";
                    //HTML
                    eregi("src="(.*).jpg",$sms,$occ);    // Ici je stocke chaque URL du document dans le tableau $occ.
                    $msg .= "--$delimiteur\r\n";
                    $msg .= "Content-Type: text/html; charset="iso-8859-1"\r\n";
                    $msg .= "Content-Transfer-Encoding:8bit\r\n";
                    $msg .= "\r\n";
                    $msg .= "<html>";
                    for ($i=1;$i<=sizeof($occ);$i++){
                        $sms = str_replace("$occ[$i].jpg","cid:image$i",$sms); // Pour chaque URL je change la source par cid:image et un numéro.
                    }
                    $msg .= $sms;
                    $msg .= "</html>\r\n";
                    $msg .= "\r\n";
                    //Attachement
                    for ($i=1;$i<(sizeof($occ));$i++){
                        $fichier = $occ[$i].".jpg";  // Et pour finir j'attache les PJ au mail
                        $fp      = fopen($fichier, "rb");
                        $fichierattache = fread($fp, filesize($fichier));
                        fclose($fp);
                        $fichierattache = chunk_split(base64_encode($fichierattache));

                        $msg .= "--$delimiteur\r\n";
                        $msg .= "Content-Type: application/octet-stream; name="image$i.jpg"\r\n";
                        $msg .= "Content-Transfer-Encoding: base64\r\n";
                        $msg .= "Content-ID: \r\n"; // Et leur donne l'ID contenu dans le corps du mail.
                        $msg .= "\r\n";
                        $msg .= $fichierattache . "\r\n";
                        $msg .= "\r\n\r\n";
                    }
                    //Fin
                    $msg .= "--$delimiteur\r\n";

                    mail($destinataire,$sujet,stripslashes($msg),"Reply-to: $reponse\r\nFrom: $expediteur\r\n".$entete);

Voila, si quelqu'un à une bonne idée, merci d'avance parceque moi, je désespère.

2 réponses

Shenron42000 Messages postés 46 Date d'inscription vendredi 8 octobre 2004 Statut Membre Dernière intervention 28 janvier 2009
4 janv. 2007 à 09:27
UP ! Please
0
pingoin33 Messages postés 1 Date d'inscription mercredi 23 avril 2008 Statut Membre Dernière intervention 24 avril 2008
24 avril 2008 à 00:27
Bonjour,
avant tout, merci pour ton très interressant post ; j'ai à peu près le même problème (en plus simple) et je n'ai pas trouvé gd chose pour le résoudre.

...mais je viens de tomber la dessus : http://www2.rad.com/networks/1995/mime/examples.htm#multipart

=> la dernière occurence d'un 'boundary' (ou délimiteur) doit être - non seulement précédée - mais aussi suivie de la chaine "--"
(je constate bien cette syntaxe dans le code source de mes mails)

donc, dans ton code :
                    //Fin
                    $msg .= "--$delimiteur--\r\n";

...à tout hasard, si ça peut aider... mais j'espère que ton problème est résolu depuis longtemps !!!
ù
0
Rejoignez-nous