Iinsertion d'image dans un mail
Bonjour à tous
Voilà j'ai un script PHP qui envoie un mail dont le contenu est au format HTML et j'aurais voulu mettre une image dans mon contenu HTML
Après une petite recherche sur le web j'ai trouvé ce code
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
|
<?php
//----------------------------------
// Construction de l'entête
//----------------------------------
$delimiteur = "-----=".md5(uniqid(rand()));
$entete = "MIME-Version: 1.0\r\n";
$entete .= "Content-Type: multipart/related; boundary=\"$delimiteur\"\r\n";
$entete .= "\r\n";
//--------------------------------------------------
// Construction du message proprement dit
//--------------------------------------------------
$msg = "Je vous informe que ceci est un message au format MIME 1.0 multipart/mixed.\r\n";
//---------------------------------
// 1ère partie du message
// Le code HTML
//---------------------------------
$msg .= "--$delimiteur\r\n";
$msg .= "Content-Type: text/html; charset=\"utf-8\"\r\n";
$msg .= "Content-Transfer-Encoding:8bit\r\n";
$msg .= "\r\n";
$msg .= "<html><body><h1>Email HTML avec 2 images</h1>";
$msg .= "Image 1:<img src=\"cid:image1\"><br />";
$msg .= "Image 2:<img src=\"cid:image2\"><br /></body></html>\r\n";
$msg .= "\r\n";
//---------------------------------
// 2nde partie du message
// Le 1er fichier (inline)
//---------------------------------
$fichier = 'monfichier.jpg';
$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=\"$fichier\"\r\n";
$msg .= "Content-Transfer-Encoding: base64\r\n";
$msg .= "Content-ID: <image1>\r\n";
$msg .= "\r\n";
$msg .= $fichierattache . "\r\n";
$msg .= "\r\n\r\n";
//---------------------------------
// 3ème partie du message
// Le 2ème fichier (attachment)
//---------------------------------
$fichier = 'monfichier2.jpg';
$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=\"$fichier\"\r\n";
$msg .= "Content-Transfer-Encoding: base64\r\n";
$msg .= "Content-ID: <image2>\r\n";
$msg .= "\r\n";
$msg .= $fichierattache . "\r\n";
$msg .= "\r\n\r\n";
$msg .= "--$delimiteur\r\n";
$destinataire = 'testemail@tout estfacile.com';
$expediteur = 'moi@monsite.com';
$reponse = $expediteur;
echo "Ce script envoie un mail au format HTML avec 2 images à $destinataire";
mail($destinataire,
'Email HTML avec 2 images',
$msg,
"Reply-to: $reponse\r\nFrom: $expediteur\r\n".$entete);
?> |
Je l'ai testé et malheureusement il ne fonctionne pas. C'est à dire que je reçois bien le mail mais les images ne sont pas présentes
Si je regarde le source du mail voilà ce que j'obtiens
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
Je vous informe que ceci est un message au format MIME 1.0 multipart/mixed.
-------=3289aa05e675cb09e3266ec20e2808cd
Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding:8bit
<html><body><h1>Email HTML avec 2 images</h1>Image 1:<img src="cid:image1"><br><br>Image 2:<img src="cid:image2"><br><br></body></html>
-------=3289aa05e675cb09e3266ec20e2808cd
Content-Type: application/octet-stream; name="logo.png"
Content-Transfer-Encoding: base64
Content-ID: <image1>
-------=3289aa05e675cb09e3266ec20e2808cd
Content-Type: application/octet-stream; name="logo.png"
Content-Transfer-Encoding: base64
Content-ID: <image2>
-------=3289aa05e675cb09e3266ec20e2808cd |
J'ai comme l'impression que l’encodage n'a pas été réalisé car d'après le code après les lignes Content-ID: je devrait avoir quelque chose. Mais n'étant pas spécialiste du domaine je me trompe peut être
Si quelqu'un a une idée je suis preneur