Page 1 sur 1

Formulaire avec envoi fichier joint (du DD de l'internaute)

Posté : 25 août 2010, 11:27
par RoseN
Bonjour,

j'aimerais un formulaire avec quelques champs à saisir et un fichier à sélectionner sur le DD de l'internaute.
c'est pour un envoi de CV en ligne.

dons mon formulaire, j'ai le champ
<input type="file" name="CV" id="CV" />
mon bouton envoyer du formulaire reboucle sur ma page, je souhaite donc récupérer le fichier que l'internaute a sélectionné préalablement.

or si je prend la variable $_FILES['CV']['name']

je ne récupère que le nom de mon fichier et pas le chemin complet du fichier.

du coup à la construction de mon mail
quand je fais :
$file = $CV;
$fp = fopen($file, "r");   
$attachment = fread($fp, filesize($file));
fclose($fp);
il me met une erreur
Warning: fopen(NomDuFichier.pdf) [function.fopen]: failed to open stream: No such file or directory

puis enchaîne ensuite sur une erreur filesize, fread et fclose qui découle de la 1ère erreur.

donc
  • soit je dois récupérer le chemin d'accès avec le nom de mon fichier, mais dans ce cas comment ?
    soit je n'ai pas la bonne procédure pour faire ce mail avec le fichier joint
la procédure que j'ai trouvée sur un autre site c'est créer un mail avec des frontières.
si quelqu'un peut m'aider, ça serait super sympa.

Merci d'avance

Re: Formulaire avec envoi fichier joint (du DD de l'internaute)

Posté : 25 août 2010, 11:33
par Nours312
regardes de ce coté là :: move_uploade_file()

Re: Formulaire avec envoi fichier joint (du DD de l'internaute)

Posté : 25 août 2010, 11:55
par RoseN
oui mais y'a un truc que je ne capte pas
je n'ai pas besoin de l'enregistrer sur le serveur : surtout pas d'ailleurs, car je ne veux rien garder sur le serveur.
juste envoyer le fichier sélectionner en tant que fichier joint à mon mail...

Re: Formulaire avec envoi fichier joint (du DD de l'internaute)

Posté : 25 août 2010, 12:34
par xTG
Tu es obligé de le sauvegarder dans un premier temps pour ensuite l'ajouter à ton mail.
Rien ne t'empêches le mail envoyé de supprimer le fichier du serveur. ^_-

Re: Formulaire avec envoi fichier joint (du DD de l'internaute)

Posté : 25 août 2010, 13:56
par AoSiX
Tu es obligé de le sauvegarder dans un premier temps pour ensuite l'ajouter à ton mail.
Rien ne t'empêches le mail envoyé de supprimer le fichier du serveur. ^_-
Exactement.

Tu upload sur le serveur, tu envoi le(s) mail(s), tu supprimes ( http://php.net/manual/fr/function.unlink.php )

Re: Formulaire avec envoi fichier joint (du DD de l'internaute)

Posté : 30 août 2010, 16:09
par RoseN
OK
merci pour vos réponses,

j'ai donc utilisé le move_uploade_file()
il télécharge bien mon fichier sur le serveur dans le dossier que je lui ai donné.
il envoie le mail mais j'ai une mauvaise réception du mail surement du au code php
j'ai bien l'expéditeur et le sujet qui sont corrects, mais le corps du mail ne l'est pas.

je réceptionne ça :
Content-Type: multipart/mixed; boundary="-----=9880e6c98ce996a98d5df84ebe90343d"




Je vous informe que ceci est un message au format MIME 1.0 multipart/mixed.
-------=9880e6c98ce996a98d5df84ebe90343d
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding:8bit


kkkkkkk lllllll


Tel : 0012313213
Adresse Email :[email protected]
-------=9880e6c98ce996a98d5df84ebe90343d
Content-Type: application/pdf; name="MONREPERTOIRE/MONFICHIER.doc"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="MONREPERTOIRE/MONFICHIER.doc"

0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAAEAAAA+AEAAAAAAAAA
EAAA+gEAAAEAAAD+////AAAAAPQBAAD1AQAA9gEAAPcBAAD/////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////s
pcEAcWAJBAAA+DK/AAAAAAAAEAAAAAAABgAATgwAAA4AYmpianFQcVAAAAAAAAAAAAAAAAAAAAAA
AAAMBBYAEjsAABM6AQATOgEAPQMAAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//w8AAAAA
AAAAAAD//w8AAAAAAAAAAAD//w8AAAAAAAAAAAAAAAAAAAAAAKQAAAAAAKgjAAAAAAAAqCMAAKgj
AAAAAAAAqCMAAAAAAACoIwAAAAAAAKgjAAAAAAAAqCMAABQAAAAAAAAAAAAAAN4jAADEAgAAyi4A
AAAAAADKLgAAAAAAAMouAAA4AAAAAi8AABwAAAAeLwAAPAAAAKImAAAAAAAAK0EAAOABAABmLwAA
KAAAAI4vAAA6AAAAyC8AAAAAAADILwAAAAAAAMgvAAAAAAAA9DMAAAAAAAD0MwAAAAAAAPQzAAAA
[...]

-------=9880e6c98ce996a98d5df84ebe90343d--
mon code PHP a été récupérer d'un autre site
mais je ne trouve pas le problème...
$entete = "From: $nom_depart $prenom_depart<$adresse_depart> \r\nReply-To: $nom_reponse<$adresse_reponse> \r\n";

// --------------Mail avec fichier attaché

//----------------------------------
// Construction de l'entête
//----------------------------------
// On choisi généralement de construire une frontière générée aleatoirement
// comme suit. (le document pourra ainsi etre attache dans un autre mail
// dans le cas d'un transfert par exemple)
$boundary = "-----=".md5(uniqid(rand()));

// Ici, on construit un entête contenant les informations
// minimales requises.
// Version du format MIME utilisé
$header = "MIME-Version: 1.0\r\n";
// Type de contenu. Ici plusieurs parties de type different "multipart/mixed"
// Avec un fronti?re d?finie par $boundary
$header .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n";
$header .= "\r\n";

//--------------------------------------------------
// Construction du message proprement dit
//--------------------------------------------------

// Pour le cas, où le logiciel de mail du destinataire
// n'est pas capable de lire le format MIME de cette version
// Il est de bon ton de l'en informer
// REM: Ce message n'apparaît pas pour les logiciels sachant lire ce format
$msg = "Je vous informe que ceci est un message au format MIME 1.0 multipart/mixed.\r\n";

//---------------------------------
// 1ère partie du message
// Le texte
//---------------------------------
// Chaque partie du message est séparé par une frontière
$msg .= "--$boundary\r\n";

// Et pour chaque partie on en indique le type
$msg .= "Content-Type: text/plain; charset=\"iso-8859-1\"\r\n";
// Et comment il sera codé
$msg .= "Content-Transfer-Encoding:8bit\r\n";
// Il est indispensable d'introduire une ligne vide entre l'entête et le texte
$msg .= "\r\n";
// Enfin, on peut écrire le texte de la 1ère partie
$msg .= "\n".$Nom.' '.$Prenom."\n".$DateNais."\n \nTel : ".$Tel."\nAdresse Email :".$Email;
$msg .= "\r\n";

//---------------------------------
// 2nde partie du message
// Le fichier
//---------------------------------
// Tout d'abord lire le contenu du fichier
//echo "<br / > variable CV:".$CV."<br / >";
$file = "MonRepertoire/".$FichierTelecharge;
$fp = fopen($file, "r");   // rb c'est pour les windowsiens
$attachment = fread($fp, filesize($file));
fclose($fp);

// puis convertir le contenu du fichier en une chaîne de caractère
// certes totalement illisible mais sans caractères exotiques
// et avec des retours à la ligne tous les 76 caractères
// pour être conforme au format RFC 2045
$attachment = chunk_split(base64_encode($attachment));

// Ne pas oublier que chaque partie du message est séparé par une frontière
$msg .= "--$boundary\r\n";
// Et pour chaque partie on en indique le type
//$msg .= "Content-Type: image/gif; name=\"$file\"\r\n";
$msg .= "Content-Type: application/pdf; name=\"$file\"\r\n";
// Et comment il sera codé
$msg .= "Content-Transfer-Encoding: base64\r\n";
// Petit plus pour les fichiers joints
// Il est possible de demander à ce que le fichier
// soit si possible affiché dans le corps du mail
//      $msg .= "Content-Disposition: inline; filename=\"$file\"\r\n";
// ou en fichier joint
$msg .= "Content-Disposition: attachment; filename=\"$file\"\r\n";
// Il est indispensable d'introduire une ligne vide entre l'entête et le texte
$msg .= "\r\n";
// C'est ici que l'on insère le code du fichier lu
$msg .= $attachment . "\r\n";
$msg .= "\r\n\r\n";

// voilà, on indique la fin par une nouvelle frontière
$msg .= "--$boundary--\r\n";



$a = mail (  "$nom_destinataire<$adresse_destinataire>",  $mon_sujet  ,  $msg  , $entete.$header ) ;

// --------------fin mail avec fichier attaché

si quelqu'un voit où est le problème.
MERCI d'avance

Re: Formulaire avec envoi fichier joint (du DD de l'internaute)

Posté : 07 sept. 2010, 12:21
par RoseN
Personne n'a d'idée sur mon problème ?

ou tout simplement un script qui marche pour envoyer un fichier enregistré sur le serveur Web en fichier joint à un mail. ?

Merci d'avance c'est urgent...

Re: Formulaire avec envoi fichier joint (du DD de l'internaute)

Posté : 07 sept. 2010, 12:58
par enneite
si je prend la variable $_FILES['CV']['name']...
en fait pouir avoir le chemin complet, faut prendre :
$_FILES['CV']['tmp_name']

Re: Formulaire avec envoi fichier joint (du DD de l'internaute)

Posté : 07 sept. 2010, 13:00
par enneite
pour envoyer une pièce jointe en mail :
ici : post322987.html#p322987