Mail HTML avec image en PJ

Signaler
Messages postés
46
Date d'inscription
vendredi 8 octobre 2004
Statut
Membre
Dernière intervention
28 janvier 2009
-
Messages postés
1
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
24 avril 2008
-
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

Messages postés
46
Date d'inscription
vendredi 8 octobre 2004
Statut
Membre
Dernière intervention
28 janvier 2009

UP ! Please
Messages postés
1
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
24 avril 2008

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 !!!
ù