Bonjour,
J'aimerais envoyer un mail avec pièce jointe, mais ça ne marche pas comme je veux.
Voici mon code :
Le fichier en question est une image jpeg, la fonction filetype me retourne "file". J'ai donc aussi testé en forçant le type = "image/jpeg". Voici les résultats obtenus :
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 <?php // To $to = 'destinataire1,destinataire2'; // Subject $subject = 'Bonjour... !'; // clé aléatoire de limite $boundary = md5(uniqid(microtime(), TRUE)); // Headers $headers = 'From: moi <moi@server.com>'."\r\n"; $headers .= 'Mime-Version: 1.0'."\r\n"; $headers .= 'Content-Type: multipart/mixed;boundary='.$boundary."\r\n"; $headers .= "\r\n"; // Message $msg = 'Message avec pièce jointe.'."\r\n\r\n"; // Texte $msg .= '--'.$boundary."\r\n"; $msg .= 'Content-type:text/plain;charset=utf-8'."\r\n"; $msg .= 'Content-transfer-encoding:8bit'."\r\n"; $msg .= 'Un message avec une pièce jointe.'."\r\n"; // Pièce jointe $file_name = '/home/ludo/public_html/bonjour/images/poney/Feb_11_2010.jpg'; if (file_exists($file_name)) { $file_type = filetype($file_name); //$file_type = 'image/jpeg'; $file_size = filesize($file_name); $handle = fopen($file_name, 'r') or die('File '.$file_name.'can t be open'); $content = fread($handle, $file_size); $content = chunk_split(base64_encode($content)); $f = fclose($handle); $msg .= '--'.$boundary."\r\n"; $msg .= 'Content-type:'.$file_type.';name='.$file_name."\r\n"; $msg .= 'Content-transfer-encoding:base64'."\r\n"; $msg .= $content."\r\n"; } else { echo "Le fichier n'existe pas"; } // Fin $msg .= '--'.$boundary."\r\n"; // Function mail() if (mail($to, $subject, $msg, $headers)) { echo "email envoye\n"; } else { echo "probleme lors de l'envoi du mail\n"; } ?>
Pour les destinataires j'ai un client mail (outlook 2003) et un webmail (gmail).
- sous outlook 2003 je reçois le mail mais il n'est pas "interprété". voici le contenu du mail :
alors que sous gmail le mail passe sans problème et l'image est bien en pièce jointe.Mime-Version: 1.0
Content-Type: multipart/mixed;boundary=83fef4e94825adb9e5e4d9e719263a42
Message-Id: <20100302135521.E337D1B41E@eeebox>
Date: Tue, 2 Mar 2010 14:55:21 +0100 (CET)
Message avec pièce jointe.
--83fef4e94825adb9e5e4d9e719263a42
Content-type:text/plain;charset=utf-8
Content-transfer-encoding:8bit
Un message avec une pièce jointe.
--83fef4e94825adb9e5e4d9e719263a42
Content-type:file;name=/home/ludo/public_html/bonjour/images/poney/Feb_11_2010.jpg
Content-transfer-encoding:base64
/9j/4AAQSkZJRgABAQEAZABkAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkI
CQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkLEBAQEBAQ
etc...
--83fef4e94825adb9e5e4d9e719263a42
Quelqu'un saurait me dire d'où ça vient et comment résoudre le problème ?
Merci.
Partager