Bonjour,

J'ai une couille quelque part dans ma fonction qui permet d'envoyer un mail avec pièces jointes :
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
 
function Envoi_Mail_en_Masse($lib_expediteur, $expediteur, $destinataire, $sujet, $texte, $idMail){
	require_once 'classes/class_mail_pieces_jointes.php';
	$AllPiecesJointes = new mail_pieces_jointes($GLOBALS['bdd']);
 
	// permet de définir les différentes parties du mail
	$limite = "----=_Part_".md5(uniqid(rand()));
 
	// Pour envoyer un mail HTML, l'en-téte Content-type doit étre défini
	$headers  = 'MIME-Version: 1.0' . "\r\n";
	//$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
	$headers .="Content-Type: multipart/mixed; boundary=$limite\r\n";
 
	// En-tétes additionnels
	// Toutes les adresses sont envoyées en BCC pour étre masquées
	$headers .= "From: $lib_expediteur <$expediteur>" . "\r\n";
 
	if ($Environnement == "TEST") $headers .= "Cc: $expediteur" . "\r\n";
	$headers .= "Bcc: $destinataire" . "\r\n";
 
 
	$lemail = "--".$limite."\n";
	//$lemail .= "Content-Type: text/html; charset='iso-8859-1'\n";
	$lemail .= $texte;
 
	// fichiers joints à attacher 
	$attachement = ""; 
 
	$LesFichiers = $AllPiecesJointes->selectAll($idMail);
	foreach ($LesFichiers as $UnFic) {
		$attachement .= "--".$limite."\n";
		$attachement .= "Content-Type: text/plain; charset=iso-8859-1 name=" . $UnFic['Fichier'] . "\n";
		$attachement .= "Content-Transfer-Encoding: base64\n";
		$attachement .= "Content-Disposition: attachment; filename=" . $UnFic['Fichier'] . "\n\n";
 
		// lecture du fichier présent sur le serveur
		$fd = fopen($UnFic['Fichier'],"rb");
		$contenu = fread($fd,filesize($UnFic['Fichier']));
		fclose($fd);
 
		// encodage en base64 pour que le fichier soit lisible
		$attachement .= chunk_split(base64_encode($contenu));
	}
 
	// on ferme ensuite toutes les parties du mail
	$attachement .= "\n\n--".$limite."--\n\n";
 
	$corp_mail = "<html><body>
				  $lemail
				  </body></html>";
 
 
	if ($Environnement == "TEST") {
		$sujet = "/!\/!\ ENV TEST /!\/!\ - " . $sujet;
		$corp_mail = "<font color='red'>----- ENVIRONNEMENT DE TEST -----</font><br><br>" . $corp_mail;
	}
 
 
	// en local, on appele pas la fonction mail, par contre, on affiche le corps du mail
	if ($_SERVER['HTTP_HOST'] != "127.0.0.1") {
		@mail("bidon@toto.fr", $sujet, $corp_mail.$attachement, $headers);
	}
	else
		Afficher_Mail($expediteur, $destinataire, $sujet, $corp_mail);
}
Je voudrais envoyer le mail en html.
Je reçois le mail, mais pas la pièce jointe ne le texte dans le corps du message. Sous Outllok, j'ai bien la trombone qui indique une pièce jointe

Quelqu'un pourrait m'aiguiller, SVP.


J'ai testé ma fonction ici et ça fonctionne :
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
 
<h1A>Test envoi de mail avec pièce jointe</h1A>
<?php
$aFicPieceJointe[] = "documents/Reglement_Interieur_du_Scf.pdf"; 
$aFicPieceJointe[] = "images/andiplong.jpg";
$aFicPieceJointe[] = "documents/Feuille_palanquée_vierge.xlsx";
 
$objet_mail = "bidon"; // objet du mail 
$desti_mail = "xxxxxxxx@gmail.com";// destinataire 
 
// permet de définir les différentes parties du mail 
$limite = "----=_Part_".md5(uniqid(rand())); 
 
// headers du mail 
$headers ="From: bidon@bidon.com\n"; 
$headers .="MIME-Version: 1.0\n"; 
$headers .="Content-Type: multipart/mixed; boundary=$limite\r\n"; 
 
// corps du message 
// partie texte 
$texte = "--".$limite."\n"; 
$texte .= "Content-Type: text/plain; charset='iso-8859-1'\n"; 
$texte .= "Texte du mail bidon\n\n"; 
 
// fichiers joints à attacher 
$attachement = ""; 
 
// tableau des fichiers à mettre en pièces jointes 
echo "<br>Fichiers : "; print_r($aFicPieceJointe);
if (is_array($aFicPieceJointe)) { 
	for ($i=0 ; $i<count($aFicPieceJointe) ; $i++) {
		$type_fichier = filetype("Reglement_Interieur_du_Scf.pdf");
		$attachement .= "--".$limite."\n"; 
		$attachement .= "Content-Type: text/plain; charset=iso-8859-1 name=$aFicPieceJointe[$i]\n"; 
		$attachement .= "Content-Transfer-Encoding: base64\n"; 
		$attachement .= "Content-Disposition: attachment; filename=$aFicPieceJointe[$i]\n\n"; 
 
		// lecture du fichier présent sur le serveur 
		$fd = fopen($aFicPieceJointe[$i],"rb"); 
		$contenu = fread($fd,filesize($aFicPieceJointe[$i])); 
		fclose($fd); 
 
		// encodage en base64 pour que le fichier soit lisible 
		$attachement .= chunk_split(base64_encode($contenu)); 
	} 
 
	// on ferme ensuite toutes les parties du mail 
	$attachement .= "\n\n--".$limite."--\n\n"; 
 
	// on envoi le mail 
	if (mail($desti_mail,$objet_mail,$texte.$attachement,$headers)) 
	{ 
		echo "<br>Envoi du mail réussi";
	} 
	else 
	{ 
		echo "<br>Envoi du mail échoué"; 
	} 
 
}// if (is_array($aFicPieceJointe)) 
?>

merci.

Eddy