Formulaire d'envoi mail avec PJ

Résolu/Fermé
djinlemage Messages postés 18 Date d'inscription vendredi 7 décembre 2007 Statut Membre Dernière intervention 10 décembre 2013 - Modifié par djinlemage le 6/12/2013 à 09:57
djinlemage Messages postés 18 Date d'inscription vendredi 7 décembre 2007 Statut Membre Dernière intervention 10 décembre 2013 - 10 déc. 2013 à 16:49
Bonjour,

Je suis en train créer un site Web pour ma société et je cherche à faire un formulaire de recrutement du type Nom Prénom etc ET envoi de CV et lettre de motivation.

Apres pas mal de recherche, j'ai trouvé la partie formulaire et envoi par email ou la partie upload d'un fichier depuis un formulaire mais pas une action commune aux 2 taches.

J'ai donc tenté ma chance avec ce tuto http://fr.openclassrooms.com/informatique/cours/e-mail-envoyer-un-e-mail-en-php/annexe-joindre-un-fichier
mais n'étant pas développer PHP il doit me manquer des choses.
Lorsque j'exécute ma page, j'ai les messages d'erreur :

Warning: fopen() [function.fopen]: Filename cannot be empty in /homez.614/groupeti/www/test/recrutement_envoi.php on line 34

Warning: fread() expects parameter 1 to be resource, boolean given in /homez.614/groupeti/www/test/recrutement_envoi.php on line 36

Warning: fclose() expects parameter 1 to be resource, boolean given in /homez.614/groupeti/www/test/recrutement_envoi.php on line 38

Warning: fopen() [function.fopen]: Filename cannot be empty in /homez.614/groupeti/www/test/recrutement_envoi.php on line 40

Warning: fread() expects parameter 1 to be resource, boolean given in /homez.614/groupeti/www/test/recrutement_envoi.php on line 41

Warning: fclose() expects parameter 1 to be resource, boolean given in /homez.614/groupeti/www/test/recrutement_envoi.php on line 43

Autant je les comprends autant je e sais pas les resoudre.

Pouvez-vous m'aider ?

Merci

Voici les fichiers php :

Le formulaire

    
<form method="POST" action="recrutement_envoi.php" enctype="multipart/form-data">
 <fieldset style="width:500px;">
  <table border="0">
  <legend>Vos coordonnées</legend>
   <p>
   <tbody>
    <tr>
     <td>Civilité :</td>
     <td>
      <input type="radio" id="civilite1" name="civilite" value="mademoiselle"></input><label for="civilite1">Mademoiselle</label>
      </br>
      <input type="radio" id="civilite2" name="civilite" value="madame"></input><label for="civilite2">Madame</label>
      </br>
      <input type="radio" id="civilite3" name="civilite" value="monsieur"></input><label for="civilite3">Monsieur</label>
     </td>
    </tr>
    <tr>
     <td style="width:100px;"><label for="nom">Nom :</label></td>
     <td><input type="text" id="nom" name="nom" tabindex="1" /></td>
    </tr>
    <tr>
     <td><label for="prenom">Prénom :</label></td>
     <td><input type="text" id="prenom" name="prenom" tabindex="2" /></td>
    </tr>
    
    <tr>
     <td><label for="email">Email :</label></td>
     <td><input type="text" id="email" name="email" tabindex="3" /></td>
    </tr>
    <tr>
     <td><label for="tel">Téléphone :</label></td>
     <td><input type="text" id="tel" name="tel" tabindex="4" /></td>
    </tr>       
   </tbody>
   </p>
  </table>
 </fieldset>
 <fieldset style="width:500px;">
  <table border="0">
   <tbody>
    <tr>
     <td><input type="hidden" name="MAX_FILE_SIZE" value="100000">CV : </td>
     <td><input type="file" name="filecv"></td>
    </tr>
    <tr><!-- On limite le fichier à 100Ko -->
     <td><input type="hidden" name="MAX_FILE_SIZE" value="100000">Lettre </br>de motivation :</td>
     <td><input type="file" name="filemotiv"></td>
    </tr>
   <tbody>
  </table>
 </fieldset>
 <div><input type="submit" name="envoi" value="Envoyer le formulaire" /></div>    
</form>   
 


Et l'envoi avec biensur mon adresse mail valide:

<?php
$mail = 'adressemail@moi'; // Déclaration de l'adresse de destination.
if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $mail)) // On filtre les serveurs qui présentent des bogues.
{
 $passage_ligne = "\r\n";
}
else
{
 $passage_ligne = "\n";
}
 $formcivilite = htmlentities($_POST['civilite']);
 $formnom  = htmlentities($_POST['nom']); // htmlentities() convertit des caractères "spéciaux" en équivalent HTML
 $formprenom  = htmlentities($_POST['prenom']);
 $formemail  = htmlentities($_POST['email']);
 $formtel  = htmlentities($_POST['tel']);
 $formobjet  = htmlentities($_POST['objet']);
 $formmessage = htmlentities($_POST['message']);
 $formcv   = htmlentities($_POST['filecv']);
 $formletmotiv = htmlentities($_POST['filemotiv']);
 
 

//=====Déclaration des messages au format texte et au format HTML.
$message_txt = "Salut à tous, voici un e-mail envoyé par un script PHP.";
$message_html = "<html><head></head><body><b>Salut à tous</b>, voici un e-mail envoyé par un <i>script PHP</i>.</body></html>";
//==========
 
//=====Lecture et mise en forme de la pièce jointe.
//$fichier   = fopen("image.jpg", "r");
//$attachement = fread($fichier, filesize("image.jpg"));
//$attachement = chunk_split(base64_encode($attachement));
//fclose($fichier);

$fichiercv   = fopen($formcv, "r");
echo $fichiercv;
$attachementcv = fread($fichiercv, filesize("$formcv"));
$attachementcv = chunk_split(base64_encode($attachementcv));
fclose($fichiercv);

$fichiermotiv   = fopen($formcv, "r");
$attachementmotiv = fread($fichiermotiv, filesize("$formletmotiv"));
$attachementmotiv = chunk_split(base64_encode($attachementmotiv));
fclose($fichiermotiv);
//==========
 
//=====Création de la boundary.
$boundary = "-----=".md5(rand());
$boundary_alt = "-----=".md5(rand());
//==========
 
//=====Définition du sujet.
$sujet = "Hey mon ami !";
//=========
 
//=====Création du header de l'e-mail.
$header = "From: \"test\"<test@test.fr>".$passage_ligne;
$header.= "Reply-to: \"test\" <test@test.fr>".$passage_ligne;
$header.= "MIME-Version: 1.0".$passage_ligne;
$header.= "Content-Type: multipart/mixed;".$passage_ligne." boundary=\"$boundary\"".$passage_ligne;
//==========
 
//=====Création du message.
$message = $passage_ligne."--".$boundary.$passage_ligne;
$message.= "Content-Type: multipart/alternative;".$passage_ligne." boundary=\"$boundary_alt\"".$passage_ligne;
$message.= $passage_ligne."--".$boundary_alt.$passage_ligne;
//=====Ajout du message au format texte.
$message.= "Content-Type: text/plain; charset=\"ISO-8859-1\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
$message.= $passage_ligne.$message_txt.$passage_ligne;
//==========
 
$message.= $passage_ligne."--".$boundary_alt.$passage_ligne;
 
//=====Ajout du message au format HTML.
$message.= "Content-Type: text/html; charset=\"ISO-8859-1\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
$message.= $passage_ligne.$message_html.$passage_ligne;
//==========
 
//=====On ferme la boundary alternative.
$message.= $passage_ligne."--".$boundary_alt."--".$passage_ligne;
//==========
 
 
 
$message.= $passage_ligne."--".$boundary.$passage_ligne;
 
//=====Ajout de la pièce jointe.
$message.= "Content-Type: text/plain; name=\"cv.txt\"".$passage_ligne;
$message.= "Content-Type: text/plain; name=\"motiv.txt\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: base64".$passage_ligne;
$message.= "Content-Disposition: attachment; filename=\"cv.txt\"".$passage_ligne;
$message.= "Content-Disposition: attachment; filename=\"motiv.txt\"".$passage_ligne;
$message.= $passage_ligne.$attachementcv.$attachementmotiv.$passage_ligne.$passage_ligne;
$message.= $passage_ligne."--".$boundary."--".$passage_ligne; 
//========== 
//=====Envoi de l'e-mail.
mail($mail,$sujet,$message,$header);
 
//==========
?>



6 réponses

Nhay Messages postés 838 Date d'inscription vendredi 2 novembre 2012 Statut Membre Dernière intervention 17 décembre 2015 125
6 déc. 2013 à 12:46
Bonjour,
Ton fopen est en "r", lecture seul. Or le fichier n'est pas encore créer, donc il bloque, essaye plutôt avec w+
0