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
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); ?>
Si je regarde le source du mail voilà ce que j'obtiens
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Si quelqu'un a une idée je suis preneur
Partager