Page 1 sur 1

Forum avec PJ vide

Posté : 13 mars 2013, 13:35
par Raymond
Coucou à tous,

Aujourd'hui je m'en remets à votre expertise car je bloque sur un souci.
En effet, j'ai codé un p'tit formulaire afin que les visiteurs m'envoient un document.
Ainsi, j'ai bien mon form, mon script d'envoi de mail... et tout cela fonctionne parfaitement sur Gmail.

Un ami sous Thunderbird (ou autres, c'est pareil) désirant récupérer mon code, je lui mets en place sans le moindre problème.
On lance un test et ... le mail arrive complet, avec la pièce jointe... mais celle-ci est vide (taille inconnue ou alors 0.0 ko)

Bref, je ne comprends pas comment un code peut parfaitement fonctionner sur une boite mail ... et pas du tout sur les autres.

Code : Tout sélectionner

$nom = $_POST['nom'];  $expediteur = $_POST['mail'];  $cap = $_POST['cap'];     $to = 'la bonne adresse mail';     $sujet = 'le sujet';     // clé aléatoire de limite     $fontiere = md5(uniqid(microtime(), TRUE));     // Headers     $headers = 'From: '.$nom.' <'.$expediteur.'>'."\n";     $headers .= 'Mime-Version: 1.0'."\n";     $headers .= 'Content-Type: multipart/mixed;boundary='.$fontiere."\n";     $headers .= "\r\n"; // Message // Texte $msg = '--'.$fontiere."\n"; $msg .= 'Content-type:text/plain;charset=utf-8'."\n"; $msg .= 'Content-transfer-encoding:8bit'."\n"; $msg .= '-'."\n\n"; $msg .= 'Message :'."\n\n"; $msg .= '***************************'."\n\n"; $msg .= utf8_decode($mess)."\n\n"; $msg .= '***************************'."\n\n"; $msg .= 'Expediteur : '.$nom.' - '.$expediteur."\n"; $msg .= '***************************'."\n\n"; $msg .= 'ATTENTION : Pièce jointe non vérifiée - Soyez vigilant !'."\n"; // Pièce jointe     if (isset($_FILES['attach'])) {          $tmp_name= $_FILES['attach']['tmp_name'];          $name= $_FILES['attach']['name'];          $size= $_FILES['attach']['size'];          $type= $_FILES['attach']['type'];          $erreur= $_FILES['attach']['error'];          $uploadpath="uppj/";          move_uploaded_file($tmp_name,$uploadpath.$name);         $path = $uploadpath.$name;      $handle = fopen($path, 'rb');     $content = fread($handle, $size);     fclose($handle);     $content = chunk_split(base64_encode($content));     $msg .= '--'.$fontiere."\r\n";     $msg .= 'Content-type:'.$type.';name='.$name."\r\n";     $msg .= 'Content-transfer-encoding:base64'."\r\n";     $msg .= $content."\r\n";} // Fin $msg .= '--'.$fontiere."\r\n"; // Function mail() if ($cap == '5') {mail($to, $sujet, $msg, $headers);}     /* gestion erreur ET suppression PJ stockée temporairement sur serveur */     else {echo '<script>document.location="index.php?p=ok"</script>';}     echo '<script>document.location="index.php?p=no"</script>';   
Merci d'avance

Re: Forum avec PJ vide

Posté : 13 mars 2013, 13:38
par Raymond
erreur du titre : c'est form et non forum ;)

Re: Forum avec PJ vide

Posté : 13 mars 2013, 19:06
par Raymond
solution ici : http://php.net/manual/fr/ref.mail.php

Corrupted Attachments ???
I spent many hours with corrupted attachments (of all types of files) - The answer: a blank line is needed after $msg.=$file \r\n \r\n [incredible but true].