djinlemage
Messages postés18Date d'inscriptionvendredi 7 décembre 2007StatutMembreDernière intervention10 décembre 2013
-
Modifié par djinlemage le 6/12/2013 à 09:57
djinlemage
Messages postés18Date d'inscriptionvendredi 7 décembre 2007StatutMembreDernière intervention10 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.
djinlemage
Messages postés18Date d'inscriptionvendredi 7 décembre 2007StatutMembreDernière intervention10 décembre 20131 10 déc. 2013 à 16:49
Yess ça marche !!!
Voici le code pour ceux que ça intéresse :
[code]
<?php
//recup des variable du formulaire// htmlentities() convertit des caractères "spéciaux" en équivalent HTML
$formcivilite = htmlentities($_POST['civilite']);
$formnom = htmlentities($_POST['nom']);
$formprenom = htmlentities($_POST['prenom']);
$formemail = htmlentities($_POST['email']);
$formtel = htmlentities($_POST['tel']);
$formcv = $_FILES['filecv']['tmp_name'];
$formletmotiv = $_FILES['filemotiv']['tmp_name'];
//var pour test champs
$extensions = array('.txt', '.doc', '.docx', '.odt', '.pdf');
$extensioncv = strrchr($_FILES['filecv']['name'], '.');
$extensionmotiv = strrchr($_FILES['filemotiv']['name'], '.');
$taillecv = filesize($_FILES['filecv']['tmp_name']);
$taillemotiv = filesize($_FILES['filemotiv']['tmp_name']);
$taille_maxi = 2000000; //max 2Mo
$champs_vide = 'Le champs est vide.';
$fichier_vide = 'Pas de fichier sélectionné.';
$fichier_erreur_ext = 'Le type de fichier </br>n\'est pas valide.';
$fichier_erreur_taille = 'Le fichier est trop volumineux';
//var pour test mail
$atom = '[-a-z0-9!#$%&\'*+\\/=?^_'{|}~]'; // caractères autorisés avant l'arobase
$domain = '([a-z0-9]([-a-z0-9]*[a-z0-9]+)?)'; // caractères autorisés après l'arobase (nom de domaine
$regex = '/^' . $atom . '+' . // Une ou plusieurs fois les caractères autorisés avant l'arobase
'(\.' . $atom . '+)*' . // Suivis par zéro point ou plus
// séparés par des caractères autorisés avant l'arobase
'@' . // Suivis d'un arobase
'(' . $domain . '{1,63}\.)+' . // Suivis par 1 à 63 caractères autorisés pour le nom de domaine
// séparés par des points
$domain . '{2,63}$/i';
//test si champ vide
if(empty($formcivilite))
{
$vide_civilite = $champs_vide;
}
if (empty($formnom))
{
$vide_nom = $champs_vide;
}
if (empty($formprenom))
{
$vide_prenom = $champs_vide;
}
if (empty($formtel))
{
$vide_tel = $champs_vide;
}
//test si champ mail vide PUIS format adresse mail
if (empty($formemail))
{
$vide_mail = $champs_vide;
}
elseif(!preg_match($regex,$formemail))
{
$erreur_adressemail = "($formemail) n'est pas une adresse email valide.";
}
//CV test si aucun fichier PUIS test extention PUIS la taille du fichier
if (empty($formcv))
{
$vide_CV = $fichier_vide;
}
elseif(!in_array($extensioncv, $extensions)) //Si l'extension n'est pas dans le tableau
{
$erreur_extcv = $fichier_erreur_ext;
}
elseif($taillecv>$taille_maxi)
{
$erreur_taillecv = $fichier_erreur_taille;
}
//Motiv test si aucun fichier PUIS test extention PUIS la taille du fichier
if (empty($formletmotiv))
{
$vide_motiv = $fichier_vide;
}
elseif(!in_array($extensionmotiv, $extensions)) //Si l'extension n'est pas dans le tableau
{
$erreur_extmotiv = $fichier_erreur_ext;
}
elseif($taillemotiv>$taille_maxi)
{
$erreur_taillemotiv = $fichier_erreur_taille;
}
//--------------------
//Test si toutes les variables d erreur sont vide pour envoyer le mail
if((!isset($vide_civilite)) && (!isset($vide_nom)) && (!isset($vide_prenom)) && (!isset($vide_mail)) && (!isset($erreur_adressemail)) && (!isset($vide_tel)) && (!isset($vide_CV)) && (!isset($vide_motiv)) && (!isset($erreur_extcv)) && (!isset($erreur_extmotiv)) && (!isset($erreur_taillecv)) && (!isset($erreur_taillemotiv)))
{
$mail = 'monmail@moi.fr'; // 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";
}
//=====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>".$formcivilite." ".$formnom."</b> a envoyé une demande de candidature via le site Internet.</body>";
$message_html.= $passage_ligne;
$message_html.= "<body><br></br><b>Nom : </b>".$formcivilite." ".$formnom;
$message_html.= "<br></br><b>Prénom : </b>".$formprenom;
$message_html.= "<br></br><b>Adresse Email : </b>".$formemail;
$message_html.= "<br></br><b>Téléphone : </b>".$formtel;
$message_html.= "<br></br><b>En PJ, vous trouverez le CV et la lettre de motivation.</b>";
$message_html.= "</body></html>";
$message_html = mb_convert_encoding($message_html,'HTML-ENTITIES','utf-8');
//=====Lecture et mise en forme de la pièce jointe.
//PJ1
$fichiermotiv = fopen($formletmotiv, "r");
$attachementmotiv = fread($fichiermotiv, filesize("$formletmotiv"));
$attachementmotiv = chunk_split(base64_encode($attachementmotiv));
fclose($fichiermotiv);
//PJ2
$fichiercv = fopen($formcv, "r");
$attachementcv = fread($fichiercv, filesize("$formcv"));
$attachementcv = chunk_split(base64_encode($attachementcv));
fclose($fichiercv);
//=====Création de la boundary.
$boundary = "-----=".md5(rand());
$boundary_alt = "-----=".md5(rand());
//=====Définition du sujet.
$sujet = "Demande de recrutement";
//=====Création du header de l'e-mail.
$header = "From: \"test\"<test@mail.fr>".$passage_ligne;
$header.= "Reply-to: \"test\" <test@mail.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;
//=====Ajout de la PJ1.
$message.= $passage_ligne."--".$boundary.$passage_ligne;
$message.= "Content-Type: text/plain; name=\"cv$extensioncv\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: base64".$passage_ligne;
$message.= "Content-Disposition: attachment; filename=\"cv$extensioncv\"".$passage_ligne;
$message.= $attachementcv.$passage_ligne;
$message.= "--".$boundary.$passage_ligne;
//Ajout de la PJ2
$message.= $passage_ligne."--".$boundary.$passage_ligne;
$message.= "Content-Type: text/plain; name=\"motiv$extensionmotiv\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: base64".$passage_ligne;
$message.= "Content-Disposition: attachment; filename=\"motiv$extensionmotiv\"".$passage_ligne;
$message.= $attachementmotiv.$passage_ligne;
$message.= "--".$boundary.$passage_ligne;
//----------------------------
$message.= $passage_ligne."--".$boundary."--".$passage_ligne;
//=====Envoi de l'e-mail.
mail($mail,$sujet,$message,$header);
}
else
{
echo "Probleme";
echo $vide_civilite;
echo $vide_nom;
echo $vide_prenom;
echo $vide_tel;
echo $vide_mail;
echo $erreur_adressemail;
echo $vide_CV;
echo $erreur_extcv;
echo $erreur_taillecv;
echo $vide_motiv;
echo $erreur_extmotiv;
echo $erreur_taillemotiv;
}[/code]
Vous n’avez pas trouvé la réponse que vous recherchez ?
Alain_42
Messages postés5361Date d'inscriptiondimanche 3 février 2008StatutMembreDernière intervention13 février 2017894 6 déc. 2013 à 23:02
Bonsoir,
l'envoi de mail en php est fait depuis le serveur, il faut donc que le fichier joint soit sur le serveur au moment de l'envoi.
Tu as bien mis dans ton formulaire un input type file pour permettre au candidat de sélectionner le fichier dans son ordi, mais je ne vois pas dans ton code la partie qui upload le fichier de l'ordi vers le serveur.. partie qui devrait être juste avant la partie envoi du mail.
je ne vois nulle part dans ton code la partie php qui gère upload les deux fichiers LM et CV du micro de l'internaute vers le serveur
( c'est comme si tu demandait à La poste d'envoyer un colis que tu ne leur a pas encore apporté )
Ensuite regardes du côté de la classe PhpMailer
deux liens:
http://www.code-web.org/post/2007/11/20/27-l-envoit-d-e-mail-avec-php-c-est-simple-comme-phpmailer