Pièce jointe vide lors de l'envoie d'un message. Que faire?

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour.
Voilà sur notre site drupal nous avons créé une page "envoyer email", voici le code html:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<form action="/email.php" method="post" >
<script>
function Verifier_formulaire(formulaire){
  var ok=1;

    if (formulaire.objet.value==""){
    alert ("Vous avez oublié de remplir l'objet de l'émail");
    formulaire.objet.focus();
    var ok=0;
  }
    else if (formulaire.message.value==""){
    alert ("Vous avez oublié de remplir le message de l'email");
    formulaire.message.focus();
    var ok=0;
  }
if(ok==1){
      alert ("Les champs obligatoires ont bien été remplis, le message va être envoyé. ");
      formulaire.submit();
}
}
</script>

<h2>Envoyer email</h2>
<table style="border:1px solid #000000">
<tr><td>Destinataire :</td><td><TEXTAREA cols="120" rows="15" name="email">
<?php
$db
= mysql_connect("91.121.221.169", "abia", "gwenned")
    or die(
"Impossible de se connecter : " . mysql_error());
mysql_select_db ('abia_abia', $db) ;
// lancement de la requête (on impose aucune condition puisque l'on désire obtenir la liste complète des propriétaires
$sql = 'SELECT email FROM emailing';

// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());

// on va scanner tous les tuples un par un
while ($data = mysql_fetch_array($req)) {
// on affiche les résultats
echo $data['email'].', ';
}
mysql_free_result ($req);
mysql_close ();
?>

</TEXTAREA></td></tr>
<tr><td>Objet :</td><td> <input cols="120" type="text" name="objet" /></td></tr>
<tr><td>Message :</td><td> <TEXTAREA cols="120" rows="15" name="message"></TEXTAREA></td></tr>
<tr><td>Pièce jointe : </td><td><input type="hidden" name="file_name"><input type="file" name="fichier"></td></tr>

</table>

<br>
<input type="button" value="Envoyer" onclick="Verifier_formulaire (this.form)" name="userfile" type="file" />
</br>

Au niveau de ce code, pas de problème!
Nous avons créé une page avec du code php afin que le mail soit envoyer vers les adresses indiquées, et nous avons voulu mettre la possibilité d'envoyer une pièce jointe (image) avec le message, du coup lors de la réception le message passe clairement, et la pièce jointe est reconnue MAIS lorsqu'on veut l'ouvrir elles est VIDE (o.o ko).
Son contenu semble ne pas être envoyé.
Je vous met le code php :

<?php
header
("location: http://www.abia.fr");
$mail_to = $_POST['email']; //Destinataire
   
$from_mail = "abia@abia.fr"; //Expediteur
   
$from_name = "abia.fr"; //Votre nom, ou nom du site
   
$reply_to = "abia@abia.fr"; //Adresse de réponse
   
$subject = $_POST['objet'];    
   
$file_name = $_POST['fichier'];
$boundary = md5(uniqid(rand()));

$header = "MIME-Version: 1.0\r\n";
$header .= "Content-Type: multipart/mixed; boundary="$boundary"\r\n";
$header .= "From: $from_mail \r\n";
$header .= "Reply-to: $from_mail \r\n";

$msg  = "--$boundary\r\n";
$msg .= "Content-Type: text/html; charset='iso-8859-1'\r\n";
$msg .= "Content-Transfer-Encoding: 8bit\r\n\r\n";
$msg .= nl2br(stripslashes($_POST['message']));
$msg .= "\r\n\r\n";
$msg .= "--$boundary\r\n";
$msg .= "Content-Type: image/jpeg; name= $file_name\r\n";
$msg .= "Content-Transfer-Encoding: base64\r\n";
$msg .= "Content-Disposition: attachement; filename= $file_name\r\n";
$msg .= chunk_split(base64_encode(file_get_contents($file_name)))."\r\n\r\n";
$msg .= "--$boundary--";

if (
mail($mail_to, $subject, $msg, $header)) {
$confirm .= "<p>L'email a bien &eacute;t&eacute; envoy&eacute;.</p>";
}else{
$confirm .= "<p>Erreur lors de l'envoi de l'email.</p>";
}
?>

Si vous pouviez nous aider ça serait super car j'ai regardé plein de forums et ça ne m'a pas permis de résoudre ce problème.
Merci.

Forum :