PHP : fction mail HTML et Images

PHP : fction mail HTML et Images - PHP - Programmation

Marsh Posté le 24-02-2003 à 20:58:04    

Salut,
 
j'ai fait un bête copie/colle de l'exemple situé ici :
http://www.asp-php.net/scripts/asp-php/mail_html.php
 
Ensuite j'ai adapté mon adresse email et les chemins relatifs des images de fond et de la gif.
 
J'envoie le mail : No Prob!
Je reçois le mail ds la seconde mais sans image et fond !
 
Je ne pige pas.
 
Si kk1 à une idée ou connait cette méthode merci de m'aider !
 
a+ :jap:

Reply

Marsh Posté le 24-02-2003 à 20:58:04   

Reply

Marsh Posté le 02-03-2003 à 15:04:41    

Après avoir cherché et avoir été bien aidé par maunakea  :jap:  
 
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 :
  1. <?php
  2. function sendmailpj($destinataire,$subject,$message,$pj,$pjn){
  3. // variables perso
  4. $fond = "fond.jpg"; //(fichiers à placer dans le repertoire images (voir fopen...)
  5. $signature= "signature.gif";
  6. $expediteur   = "BOB<mail@fai.fr>";   // <---------------------
  7. // ----------------------------------Construction de l'entête
  8. // On construit une FRONTIERE aléatoire (allez savoir pourquoi !?)
  9. $boundary = "-----=".md5(uniqid(rand()));
  10. // On indique le fichier fond
  11. // Version du format MIME utilisé
  12. $header = "MIME-Version: 1.0\n";
  13. // Type de contenu. Ici plusieurs parties de type different "multipart/ALTERNATIVE"
  14. // Avec un frontière définie par $boundary
  15. $header .= "Content-Type: multipart/Alternative; \n   boundary=\"$boundary\"\n";
  16. $header .= "\n";
  17. // -----------------------------------Construction du message  
  18. // Message pour les softs ne supportant PAS le format MIME.
  19. $msg = "Ceci est un message au format MIME 1.0 multipart/mixed.\n";
  20. // 1ère partie du message Le texte BRUT (pour ceux qui refusent les mails HTML) (y'en a!)
  21. // Chaque partie du message est séparée par LA FRONTIERE
  22. $msg .= "--$boundary\n";
  23. // Et pour chaque partie on en indique le type
  24. $msg .= "Content-Type: Text/Plain;\n  charset=\"iso-8859-1\"\n";
  25. // Et comment il sera codé
  26. $msg .= "Content-Transfer-Encoding: quoted-printable\n\n";
  27. $msg .=eregi_replace("\\\'","'",$message);
  28. $msg .= "\n";
  29. // Message HTML au format MIME.
  30. $msg .= "--$boundary\n";
  31. // Le type
  32. $msg .= "Content-Type: Text/HTML;\n  charset=\"iso-8859-1\"\n";
  33. // Et comment il sera codé
  34. $msg .= "Content-Transfer-Encoding: quoted-printable\n\n";
  35. // Notez la référence background=3Dcid:08F04D95-4B0E-422B-9138-D5716797DB74
  36. // c'est cette référence qui va appeller l'image dans le language html !
  37. $msg .="<html><BODY style=3D\"BACKGROUND-POSITION: right bottom; FONT-SIZE: 12pt; \n";
  38. $msg .="MARGIN: 10px; BACKGROUND-REPEAT: repeat; FONT-FAMILY: Arial\"\n";
  39. $msg .=" text=3D#b0ffff vLink=3D#fce38d aLink=3D#fce38d link=3D#fce38d \n";
  40. $msg .="bgProperties=3Dfixed bgColor=3D#0420a7\n";
  41. $msg .=" background=3Dcid:08F04D95-4B0E-422B-9138-D5716797DB74 scroll=3Dyes>\n";
  42. $msg .= "\n";
  43. $msg2 =htmlentities($message);
  44. $msg2 =eregi_replace("\\\n","<br>\n",$msg2);
  45. $msg2 =eregi_replace("\\\'","'",$msg2);
  46. $msg .=$msg2;
  47. $msg .="<BR>";
  48. $msg .="<BR>";
  49. $msg .="<FONT face=3D\"Arial, Helvetica, sans-serif\" size=3D2>";
  50. $msg .="________________________________________________________________<BR>";
  51. $msg .="<FONT face=3D\"Comic Sans MS\" size=3D2>\n";
  52. $msg .="<A href=3D\"mailto:toto@toto.fr\"><IMG alt=3D\"\" \n";
  53. $msg .="hspace=3D0 src=3D\"cid:4923555B-0D28-4533-B917-07177C51A263\" \n";
  54. $msg .="align=3Dabsmiddle border=3D0></A>  <I>Bernard Jan</I>\n";
  55. $msg .=" -<B>Maitre Formateur</B> - </FONT>\n";
  56. $msg .="<A href=3D\"http://site.free.fr/\"><FONT face=3D\"Times New Roman\"\n";
  57. $msg .="size=3D3>\n";
  58. $msg .="<B><U>Site Internet</U></B></FONT></A></SPAN></SPAN></FONT>\n";
  59. $msg .= "\n";
  60. //  
  61. // ---------------------------------
  62. // 2nde partie du message
  63. // Le fichier FOND
  64. // ---------------------------------
  65. // Tout d'abord lire le contenu du fichier
  66. $fp = fopen("images/".$fond, "rb" );   // b c'est pour les windowsiens (binary)
  67. $attachment = fread($fp, filesize("images/".$fond));
  68. fclose($fp);
  69. // puis convertir le contenu du fichier en une chaîne de caractères
  70. // conforme au format RFC 2045 (lignes de 76 caractères)
  71. $attachment = chunk_split(base64_encode($attachment));
  72. // Ne pas oublier que chaque partie du message est séparé par une frontière
  73. $msg .= "--$boundary\n";
  74. // Et pour chaque partie on en indique le type
  75. $msg .= "Content-Type: image/jpg; name=\"$fond\"\n";
  76. // Et comment il sera codé
  77. $msg .= "Content-Transfer-Encoding: base64\n";
  78. // -----ICI L'ASTUCE POUR RECUPERER LA PIECE JOINTE ! (sinon ce serait une PJ ordinaire
  79. $msg .= "Content-ID: <08F04D95-4B0E-422B-9138-D5716797DB74>\n";
  80. // Il est indispensable d'introduire une ligne vide entre l'entête et le texte
  81. $msg .= "\n";
  82. // C'est ici que l'on insère le code du fichier lu
  83. $msg .= $attachment . "\n";
  84. $msg .= "\n\n";
  85. // Le fichier SIGNATURE
  86. // ---------------------------------
  87. $fp = fopen("images/".$signature, "rb" ); 
  88. $attachment = fread($fp, filesize("images/".$signature));
  89. fclose($fp);
  90. $attachment = chunk_split(base64_encode($attachment));
  91. $msg .= "--$boundary\n";
  92. $msg .= "Content-Type: image/gif; name=\"$signature\"\n";
  93. $msg .= "Content-Transfer-Encoding: base64\n";
  94. $msg .= "Content-ID: <4923555B-0D28-4533-B917-07177C51A263>\n";
  95. $msg .= "\n";
  96. $msg .= $attachment . "\n";
  97. $msg .= "\n\n";
  98. if ($pj){
  99. // Le fichier PJ
  100. // ---------------------------------
  101. $msg .= "--$boundary\n";
  102. $msg .= "Content-Type: unknown/unknown; name=\"".$pjn."\"\n";
  103. $msg .= "Content-Transfer-Encoding: base64\n";
  104. $msg .= "\n";
  105. $msg .= $pj . "\n";
  106. $msg .= "\n\n";
  107. }
  108. // voilà, on indique la fin par une nouvelle frontière
  109. // ET SEULEMENT LA (sinon les parties annexes disparaissent)
  110. $msg .= "--$boundary--\n";
  111. echo "Email envoyé à : $destinataire<br>";
  112. mail($destinataire, $subject, $msg,"Reply-to: $expediteur\nFrom: $expediteur\n".$header);
  113. }
  114. sendmailpj('mail@toto.fr','test de mail html','ici le msg','0','0') ;
  115. ?>


Message édité par kileak2 le 02-03-2003 à 15:05:52
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed