Bonjour,
J'ai une couille quelque part dans ma fonction qui permet d'envoyer un mail avec pièces jointes :
Je voudrais envoyer le mail en html.
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 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
Partager