Bonsoir,

j'ai des difficultés à envoyer en php un mail avec une image jpg en piece jointe.

Je reçois bien le mail avec une pièce jointe, mais pas celle envoyée et en faite un fichier texte contenant un ensemble de chiffres et de lettres, sans doute le cryptage du fichier. Si quelqu'un veut bien me venir en aide, ci-joint le code.

Merci

Michel

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
 
<?php
$frontiere = '-----=' . md5(uniqid(mt_rand())); 
//En-têtes du mail
$headers="From: xxx@free.fr\r\n
MIME-Version: 1.0\r\n
Content-Type: multipart/mixed; boundary=\"$frontiere\"\r\n\n";
 
//Corps du mail en commençant par le message principal
$body="--". $frontiere ."\n
Content-Type: text/plain; charset=ISO-8859-1\r\n\n
Content-Transfer-Encoding: 8bit\n\n
Message principal du mail dernier envoi.\n\n";
 
/* Piece jointe, on va dire que notre fichier s'appele bidule.doc et qu'il se situe dans le repertoire courant */
 
$fichier=file_get_contents('./M45W_2008_11_22_L2.jpg');
/* On utilise aussi chunk_split() qui organisera comme il faut l'encodage fait en base 64 pour se conformer aux standards */
$fichier=chunk_split( base64_encode($fichier) );
 
//Ecriture de la pièce jointe
$body = $body . "--" .$frontiere. "\n
Content-Type: image/jpeg; name=\"M45W_2008_11_22_L2.jpg\"\r\n
Content-Transfer-Encoding: base64\r\n
Content-Disposition:attachement; filename=\"M45W_2008_11_22_L2.jpg\"\r\n\n
$fichier";
 
//Fermeture de la frontière
$body = $body . "--" . $frontiere ."--";
 
//Envoi du mail
mail("xxx@free.fr", "Envoi dernière image", $body, $headers);
?>