Bonjour,
Ca fait deux jours que je cherche à trouver une solution à mon souci. Ayant des connaissances plutôt basiques en PHP je galère.
J'ai créé un formulaire qui doit permettre d'ajouter en fichier joint un document (type doc, txt) et qui sera envoyé par la suite par e-mail avec la fonction mail() de php.
J'en arrive à un code qui upload correctement le fichier dans le dossier /fichiers/ mais quand il s'agit de l'envoyer par email, je reçois le fichier, au bon nom, mais vide. J'imagine qu'au lieu de récupérer le fichier sur le serveur il m'envoie un fichier vide mais avec les bonnes valeurs de nom et de type de fichier.
Le souci est que pour m'en sortir j'ai grappillé de ci de là plusieurs morceaux de code et que j'en arrive à ne plus rien voir et n'étant pas un expert, je tente de debug à taton mais je sèche.
Voici le bout de code que j'utilise dans mon fichier type envoi.php appelé par le formulaire pour traiter l'envoi.
Merci d'avance pour votre aide et pendant ce temps je continu de cherche une solution.
Ca fait deux jours que je cherche à trouver une solution à mon souci. Ayant des connaissances plutôt basiques en PHP je galère.
J'ai créé un formulaire qui doit permettre d'ajouter en fichier joint un document (type doc, txt) et qui sera envoyé par la suite par e-mail avec la fonction mail() de php.
J'en arrive à un code qui upload correctement le fichier dans le dossier /fichiers/ mais quand il s'agit de l'envoyer par email, je reçois le fichier, au bon nom, mais vide. J'imagine qu'au lieu de récupérer le fichier sur le serveur il m'envoie un fichier vide mais avec les bonnes valeurs de nom et de type de fichier.
Le souci est que pour m'en sortir j'ai grappillé de ci de là plusieurs morceaux de code et que j'en arrive à ne plus rien voir et n'étant pas un expert, je tente de debug à taton mais je sèche.
Voici le bout de code que j'utilise dans mon fichier type envoi.php appelé par le formulaire pour traiter l'envoi.
<?php
// on teste si le formulaire a été soumis
if (!isset($_POST['envoi']))
{
// formulaire non envoyé
echo '<p>erreur envoi</p>'."\n";
}
else
{
// formulaire envoyé, on récupère tous les champs.
$sujet=$_POST['sujet'];
$nom =$_POST['nom'];
$adresse=$_POST["prenom"];
$tel=$_POST["tel"];
$email=$_POST['email'];
$msg=$_POST["message"];
$to="contact@monmail.fr";
// On va vérifier les variables et l'email ...
if(($email != "")&($nom != "")&($tel != "")&($adresse != "")&($msg != ""))
{
//Corps du mail en commençant par le message principal
setlocale (LC_TIME, 'fr_FR');
$mail_corps = "Envoyé le ".strftime("%A %d %B %Y à %Hh%M")." par $nom\r\n";
$mail_corps .= "\r\n";
$mail_corps .="Sujet : $sujet\r\n";
$mail_corps .= "Demande de : $nom\r\n";
$mail_corps .= "Adresse : $adresse\r\n";
$mail_corps .= "\r\n";
$mail_corps .= "Téléphone : $tel\r\n";
$mail_corps .= "Mail : $email\r\n";
$mail_corps .= "Message du client : $msg\r\n\n";
//Préparation de l'entête du mail:
$boundary = '-----=' . md5(uniqid(mt_rand()));
$mail_entete = "From: $email\r\n";
$mail_entete .= "Reply-To: $email\r\n";
$mail_entete .= "MIME-Version: 1.0\r\n";
$mail_entete .= 'Content-Type: multipart/mixed; boundary="'.$boundary.'"'."\r\n";
$mail_entete .= "X-Mailer: PHP/" . phpversion() . "\n" ;
//Corps du mail en commençant par le message principal
$message = '--'.$boundary."\r\n";
$message .= 'Content-Type: text/plain; charset="utf-8"'."\r\n";
$message .= 'Content-Transfer-Encoding: 8bit'."\r\n";
$message .= "\r\n";
$message .= $mail_corps."\r\n";
$message .= "\r\n";
//**********************PIECE JOINTE******************************//
$file_name = $_FILES['Fichier']['name'];
$source = $_FILES['Fichier']['tmp_name'];
$file_type = $_FILES['Fichier']['type'];
$file_size = $_FILES['Fichier']['size'];
move_uploaded_file($source,"./fichiers/".$file_name);
if($file_name!="")
{
$file = $file_name;
$handle = fopen($file,'rb');
$content = fread($handle, $file_size);
fclose($handle);
$content = chunk_split(base64_encode($content));
$message .= '--'.$boundary."\r\n";
$message .= 'Content-type:'.$file_type.';name='.$file_name."\r\n";
$message .= 'Content-transfer-encoding:base64'."\r\n";
$message .= 'Content-Disposition:attachement; filename='.$file_name.'\r\n';
$message .= '\r\n';
$message .= $content."\r\n";
$message .= '--'.$boundary.'--';
}
// envoi du mail
if (mail($to,"Candidature",$message,$mail_entete)) {
//Le mail est bien expédié
echo "<div class=\"message-email valide\">Merci ! Votre e-mail a bien été envoyé</div>";
} else {
//Le mail n'a pas été expédié
echo "<div class=\"message-email valide\"> Votre e-mail a pas été envoyé</div>";
}
}
}
?>
Merci d'avance pour votre aide et pendant ce temps je continu de cherche une solution.