Bonjour
je galère depuis plusieurs jours , je craque ... aussi je fais appel à la communauté
j'ai une PJ qui se nomme facture_18 dans le fichier tmp en chmod 0777
je tente de l'envoyer avec le script suivant qui appelle la fonction en bas envoimail , le mail part bien, le nom de la pièce jointe y est attaché mais le poids est faux et la pièce ne s'ouvre pas (testé avec firefox et adobe acrobat qui me dit mauvais encodage peut être ..
détail script
jusque la pas de soucis, j'ai recréé exactement le même nom que ma PJ qui est dans le fichier temp ..
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 if(isset($_GET['objet'])) $objet = strtolower($_GET['objet']); if(isset($_GET['body'])) $body = nl2br(htmlentities($_GET['body'], ENT_QUOTES)); if(isset($_GET['mailessai'])) $desti= $_GET['mailessai']; else $desti= $emailclient; if(isset($_GET['objet'])) $objet = strtolower($_GET['objet']); if(isset($_GET['body'])) $body = nl2br(htmlentities($_GET['body'], ENT_QUOTES)); if(isset($_GET['mailessai'])) $desti= $_GET['mailessai']; else $desti= $emailclient; if($typepiece == 'Facture') $proform = 'Facture'; elseif($typepiece == 'Commande' AND isset($proforma) AND $proforma==1) $proform = 'Facture_proforma'; else $proform = 'Commande'; $nomfichier = $proform . '_' . $numcommande . '.pdf'; envoimailrelance('nepasrepondre@xxx.fr', $desti, $objet, $body, $nomfichier, $_xxx['mailadmin'], $_xxx['mailadmin']); echo '<br /><div class="info">Le mail avec la PJ est parti !</div>';
la 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
36
37
38
39
40 function envoimailrelance($emailexpediteur, $emaildestinataire, $objet, $html = '', $piecejointe, $emailreponse = '', $emailaccuse = '') { $eol = PHP_EOL; $mailadmin = 'nepasrepondre@b3a.fr'; $emailreponse = $emailexpediteur; $boundary = 'boundary_' . md5(time()); // Entete du mail $headers = "From: $mailadmin" . $eol; $headers .= "Reply-To: $emailreponse" . $eol; $headers .= "X-Priority: 1".$eol; $headers .= "MIME-Version: 1.0" . $eol; $headers .= "Disposition-Notification-To: $emailaccuse" . $eol; // Si le mail est sans piece jointe if ($piecejointe == '') $headers .= 'Content-Type: multipart/alternative; boundary="' . $boundary . '"' . $eol; else $headers .= 'Content-Type: multipart/mixed; boundary="' . $boundary . '"' . $eol; $headers .= 'This is a multi-part message in MIME format.' . $eol; // Mail en HTML $body = '--' . $boundary . $eol; $body .= 'Content-Type: text/html; charset="utf-8"' . $eol . $eol; $body .= $html . $eol; // Piece jointe if ($piecejointe != '') { $path = "tmp/"; // Liste de MIME $mime = 'application/pdf'; // debut piece jointe $body .= '--' . $boundary . $eol; $body .= 'Content-Type: ' . $mime . '; name="' . $piecejointe . '"' . $eol; $body .= 'Content-Transfer-Encoding: base64' . $eol; $body .= 'Content-Disposition:attachement; filename="' . $piecejointe . '"' . $eol. $eol; $body .= chunk_split(base64_encode(file_get_contents($path.$piecejointe))) . $eol; } // Fin de message $body .= '--' . $boundary . '--' . $eol; // Envoie du mail mail($emaildestinataire, $objet, $body, $headers, '-f' . $mailadmin) }
Partager