Forum avec PJ vide

Raymond
Invité n'ayant pas de compte PHPfrance

13 mars 2013, 13:35

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

Raymond
Invité n'ayant pas de compte PHPfrance

13 mars 2013, 13:38

erreur du titre : c'est form et non forum ;)

Raymond
Invité n'ayant pas de compte PHPfrance

13 mars 2013, 19:06

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].