Bonjour,

Je viens d'écrire une fonction pour envoyer un mail via la fonction mail de mon hébergeur. Je voudrais envoyer via ce mail une pièce jointe.

J'ai écris ceci (J'ai sorti les paramètres de ma fonction)

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
//Paramètres
	$to = "lui@monhebergeur.com";
	$from = "moi@monhebergeur.com";
	$subject ="Mail avec PJ";
	$boundary = "-----=".md5(rand());
	$filename = "pj.doc";
	$file_type = filetype($filename);
	$file_size = filesize($filename);
 
	//Traitement pièce jointe
	$fichier   = fopen($filename, "r");   //on ouvre le fichier en lecture seule
	$attachement = fread($fichier, $file_size); //on lit l'ensemble du fichier avec la fonction fread
	fclose($fichier); //on ferme le fichier
	$attachement = chunk_split(base64_encode($attachement));
 
	//Header
	$headers ='From: <'.$from.'>'."\n";
	$headers .="Reply-To: ".$from."\n";
	$headers .= 'Mime-Version: 1.0'."\r\n";
	$headers .= 'Content-Type: multipart/mixed;boundary='.$boundary."\r\n";
	$headers .= '--'.$boundary."\r\n";
 
	// Message
	$msg = 'Bonjour.'."\r\n\r\n";
	$msg = 'Un mail avec une PJ vient d'arriver.'."\r\n\r\n";
	$msg .= '--'.$boundary."\r\n";
 
	// On attache la pièce jointe
 
	$msg.= "Content-Type: application/msword; name=\"pj.doc\"."\r\n";
	$msg.= "Content-Transfer-Encoding: base64"."\r\n";
	$msg.= "Content-Disposition: attachment; filename=\"pj.doc\"."\r\n\r\n";
 
	//Envoie
	mail($to, $subject, $msg, $headers);
Malheureusement je reçois bien le mail avec la pièce jointe. Mais quand j'ouvre le document word, il est vide.

J'ai placé mon fichier pj.doc et mail.php qui contient ce code à la racine de mon serveur.

D'où peux provenir l'erreur. Est ce que c'est le fichier qui n'est pas lu ?

Merci pour toute aide.