Bonsoir à tous,

je suis en train d'essayer un code permettant d'ajouter une pièce jointe à un formulaire mail (http://a-pellegrini.developpez.com/tutoriels/php/mail/#L3.4). Cependant j'ai un petit problème avec...

En effet, lorsque l'adresse mail de destination est celle de mon adresse laposte, je me retrouve avec un mail qui contient deux fichiers vides (alors que le poids du mail est bien celle de l'image, à quelques ko près bien sûr). Le premier fichier est bien nommé, et le second n'a pas de nom de fichier...

Cependant, si l'adresse mail de destination est celle de mon adresse gmail, aucun soucis... J'ai bien ma pièce jointe qu'on peut ouvrir...

J'ai tout retourné, j'ai même fait en sorte que le fichier uploadé soit enregistré sur le ftp pour être certain que le flux passe bien...

Si vous avez une idée, je suis preneur !

Merci d'avance !

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
<?php
// To
$to = 'xxxxx@laposte.net';
 
// Subject
$subject = 'Test Mail';
 
// clé aléatoire de limite
$boundary = md5(uniqid(microtime(), TRUE));
 
// Headers
$headers = 'From: Adrien Pellegrini <mail@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 = 'This is a multipart/mixed message.'."\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 = $_FILES['pj']['name'];
$file_size = $_FILES['pj']['size'];
$file_type = $_FILES['pj']['type'];
$file_tmp = $_FILES['pj']['tmp_name'];
 
$realpath = '/homez.727/xxxxxx/www/tmp/';
move_uploaded_file($_FILES['pj']['tmp_name'],$realpath.$file_name);
$file_tmp2 = $realpath.$file_name;
 
if (file_exists($file_tmp2))
{
	echo 'ok';
 	$handle = fopen($file_tmp2, 'rb') 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";
}
 
// Fin
$msg .= '--'.$boundary."\r\n";
 
// Function mail()
mail($to, $subject, $msg, $headers);
?>
Autre chose, sur mon compte laposte, le texte "Un message avec une pièce jointe" n'apparaît pas...