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
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>';
jusque la pas de soucis, j'ai recréé exactement le même nom que ma PJ qui est dans le fichier temp ..
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)
}