kileak2 | Après avoir cherché et avoir été bien aidé par maunakea je vous soumet le code qui focntionne pour Outlook Express mais PAS pour Oulook XP.
Je n'ai pas pu tester pour d'autres logiciels de messagerie.
Dans notre exemple les 2 derniers paramètres seront à 0 pour que ca fonctionne.
Le fichier php est dans la racine su site : /
Le répertoire images : /images/.
a+
Code :
- <?php
- function sendmailpj($destinataire,$subject,$message,$pj,$pjn){
- // variables perso
- $fond = "fond.jpg"; //(fichiers à placer dans le repertoire images (voir fopen...)
- $signature= "signature.gif";
- $expediteur = "BOB<mail@fai.fr>"; // <---------------------
- // ----------------------------------Construction de l'entête
- // On construit une FRONTIERE aléatoire (allez savoir pourquoi !?)
- $boundary = "-----=".md5(uniqid(rand()));
- // On indique le fichier fond
- // Version du format MIME utilisé
- $header = "MIME-Version: 1.0\n";
- // Type de contenu. Ici plusieurs parties de type different "multipart/ALTERNATIVE"
- // Avec un frontière définie par $boundary
- $header .= "Content-Type: multipart/Alternative; \n boundary=\"$boundary\"\n";
- $header .= "\n";
- // -----------------------------------Construction du message
- // Message pour les softs ne supportant PAS le format MIME.
- $msg = "Ceci est un message au format MIME 1.0 multipart/mixed.\n";
- // 1ère partie du message Le texte BRUT (pour ceux qui refusent les mails HTML) (y'en a!)
- // Chaque partie du message est séparée par LA FRONTIERE
- $msg .= "--$boundary\n";
- // Et pour chaque partie on en indique le type
- $msg .= "Content-Type: Text/Plain;\n charset=\"iso-8859-1\"\n";
- // Et comment il sera codé
- $msg .= "Content-Transfer-Encoding: quoted-printable\n\n";
- $msg .=eregi_replace("\\\'","'",$message);
- $msg .= "\n";
- // Message HTML au format MIME.
- $msg .= "--$boundary\n";
- // Le type
- $msg .= "Content-Type: Text/HTML;\n charset=\"iso-8859-1\"\n";
- // Et comment il sera codé
- $msg .= "Content-Transfer-Encoding: quoted-printable\n\n";
- // Notez la référence background=3Dcid:08F04D95-4B0E-422B-9138-D5716797DB74
- // c'est cette référence qui va appeller l'image dans le language html !
- $msg .="<html><BODY style=3D\"BACKGROUND-POSITION: right bottom; FONT-SIZE: 12pt; \n";
- $msg .="MARGIN: 10px; BACKGROUND-REPEAT: repeat; FONT-FAMILY: Arial\"\n";
- $msg .=" text=3D#b0ffff vLink=3D#fce38d aLink=3D#fce38d link=3D#fce38d \n";
- $msg .="bgProperties=3Dfixed bgColor=3D#0420a7\n";
- $msg .=" background=3Dcid:08F04D95-4B0E-422B-9138-D5716797DB74 scroll=3Dyes>\n";
- $msg .= "\n";
- $msg2 =htmlentities($message);
- $msg2 =eregi_replace("\\\n","<br>\n",$msg2);
- $msg2 =eregi_replace("\\\'","'",$msg2);
- $msg .=$msg2;
- $msg .="<BR>";
- $msg .="<BR>";
- $msg .="<FONT face=3D\"Arial, Helvetica, sans-serif\" size=3D2>";
- $msg .="________________________________________________________________<BR>";
- $msg .="<FONT face=3D\"Comic Sans MS\" size=3D2>\n";
- $msg .="<A href=3D\"mailto:toto@toto.fr\"><IMG alt=3D\"\" \n";
- $msg .="hspace=3D0 src=3D\"cid:4923555B-0D28-4533-B917-07177C51A263\" \n";
- $msg .="align=3Dabsmiddle border=3D0></A> <I>Bernard Jan</I>\n";
- $msg .=" -<B>Maitre Formateur</B> - </FONT>\n";
- $msg .="<A href=3D\"http://site.free.fr/\"><FONT face=3D\"Times New Roman\"\n";
- $msg .="size=3D3>\n";
- $msg .="<B><U>Site Internet</U></B></FONT></A></SPAN></SPAN></FONT>\n";
- $msg .= "\n";
- //
- // ---------------------------------
- // 2nde partie du message
- // Le fichier FOND
- // ---------------------------------
- // Tout d'abord lire le contenu du fichier
- $fp = fopen("images/".$fond, "rb" ); // b c'est pour les windowsiens (binary)
- $attachment = fread($fp, filesize("images/".$fond));
- fclose($fp);
- // puis convertir le contenu du fichier en une chaîne de caractères
- // conforme au format RFC 2045 (lignes de 76 caractères)
- $attachment = chunk_split(base64_encode($attachment));
- // Ne pas oublier que chaque partie du message est séparé par une frontière
- $msg .= "--$boundary\n";
- // Et pour chaque partie on en indique le type
- $msg .= "Content-Type: image/jpg; name=\"$fond\"\n";
- // Et comment il sera codé
- $msg .= "Content-Transfer-Encoding: base64\n";
- // -----ICI L'ASTUCE POUR RECUPERER LA PIECE JOINTE ! (sinon ce serait une PJ ordinaire
- $msg .= "Content-ID: <08F04D95-4B0E-422B-9138-D5716797DB74>\n";
- // Il est indispensable d'introduire une ligne vide entre l'entête et le texte
- $msg .= "\n";
- // C'est ici que l'on insère le code du fichier lu
- $msg .= $attachment . "\n";
- $msg .= "\n\n";
- // Le fichier SIGNATURE
- // ---------------------------------
- $fp = fopen("images/".$signature, "rb" );
- $attachment = fread($fp, filesize("images/".$signature));
- fclose($fp);
- $attachment = chunk_split(base64_encode($attachment));
- $msg .= "--$boundary\n";
- $msg .= "Content-Type: image/gif; name=\"$signature\"\n";
- $msg .= "Content-Transfer-Encoding: base64\n";
- $msg .= "Content-ID: <4923555B-0D28-4533-B917-07177C51A263>\n";
- $msg .= "\n";
- $msg .= $attachment . "\n";
- $msg .= "\n\n";
- if ($pj){
- // Le fichier PJ
- // ---------------------------------
- $msg .= "--$boundary\n";
- $msg .= "Content-Type: unknown/unknown; name=\"".$pjn."\"\n";
- $msg .= "Content-Transfer-Encoding: base64\n";
- $msg .= "\n";
- $msg .= $pj . "\n";
- $msg .= "\n\n";
- }
- // voilà, on indique la fin par une nouvelle frontière
- // ET SEULEMENT LA (sinon les parties annexes disparaissent)
- $msg .= "--$boundary--\n";
- echo "Email envoyé à : $destinataire<br>";
- mail($destinataire, $subject, $msg,"Reply-to: $expediteur\nFrom: $expediteur\n".$header);
- }
- sendmailpj('mail@toto.fr','test de mail html','ici le msg','0','0') ;
- ?>
|
Message édité par kileak2 le 02-03-2003 à 15:05:52
|