Page 1 sur 1

Envoie d'une pièce jointe venant d'un formulaire par mail

Posté : 03 mai 2006, 12:22
par pierrecalligaro
Bonjour à tous,
Dans un formulaire j’ai un input de type « file » qui permet à l’internaute de parcourir son ordi pour inclure une pièce jointe au format word (.doc).
Une fois le formulaire posté, je voudrais envoyer un mail avec la pièce jointe. Mais la je ne sais pas comment la récupérer pour l’insérer dans mon mail.
J’ai récupéré une classe « class.mailer.php » ou j’ai la possibilité de faire un attachment :
$mailer->attachment('/chemin_du_fichier/fichier.doc', 'fichier.doc');
Je ne sais pas quoi mettre dans le chemin du fichier.

voici mon code :
<?php
require_once("../SQL/param_connect.php");

include('class.mailer.php');

$nom=$_POST['nom'];
$prenom=$_POST['prenom'];
$tel=$_POST['tel'];
$email=$_POST['eMail'];
$adresse=$_POST['adresse'];
$cp=$_POST['cp'];
$ville=$_POST['ville'];
$pays=$_POST['pays'];


$comment=$_POST['comment'];
$id_num=$_POST['id_num'];
$id_cv=$_POST['id_cv'];

$date = date("dmYHis");


// upload du cv
$content_dir = '../fichiers/'; // dossier où sera déplacé le fichier

$tmp_file = $_FILES['fichier']['tmp_name'];

// on copie le fichier dans le dossier de destination
    $name_file = $_FILES['fichier']['name'];

    $toto=move_uploaded_file($tmp_file, $content_dir . $date . '_' . $name_file);


$subject = 'essai';

$mailer = new Mailer();

$mailer->set_from('[email protected]', 'essai');
$mailer->set_address('[email protected]');

$mailer->set_format('3');
$mailer->set_subject($subject);


$mailer->attachment('/chemin_fichier/fichier.doc', 'fichier.doc');



if ( $mailer->send() ) {
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
  <head>
    <title>Cadidature pour le poste de : <?php echo $idcv; ?></title>
    <link type="text/css" href="../css/formstyles.css" rel="stylesheet"/>
</head>

<body>
  <div id="last">
<p>Votre candidature a bien été enregistrée.</p>
</div>
</body>

</html>

<?php
$chemin_cv="http://www.arcos-partners.com/fichiers/". $date . '_' . $name_file;

$r2="insert into candidature (nom, prenom, email, tel, adresse1, cp, ville, pays, id_offre, message,date_depot, chemin_cv)
                 values('$nom', '$prenom', '$email', '$tel', '$adresse', '$cp', '$ville', '$pays', '$id_num', '$comment', NOW(), '$chemin_cv')";
$rq2=mysql_query($r2) or die("Erreur : ".mysql_error());

} else { echo "erreur";}
?>

Posté : 03 mai 2006, 12:32
par Ryle
Hello,

Pour pouvoir retransmettre un fichier, il te faut dans un premier temps le récupérer sur le serveur, puis le passer en pièce jointe.

Pour la récupération sur le serveur, c'est ce que fait la fonction move_uploaded_file() en le copiant dans le dossier que tu lui spécifies.

L'envoi du fichier en pièce jointe se fait donc ensuite à partir de ce même dossier :)

Posté : 03 mai 2006, 15:04
par pierrecalligaro
Merci Ryle, mais maintenant comment connaitre le nom du fichier sachant que lorsque je l'insére dans le dossier sur mon serveur, je le nomme avec une date + l'heure + les secondes et le nom du fichier d'origine. De pus j'ai plusieurs fichiers .doc dans mon dossier.
Je fais cela pour etre sur d'avoir un nom unique par fichier enregistré.

si je mets comme chemin :
$mailer->attachment('www.monsite.com/fichier/'.$date . '_' . $name_file, 'cv.doc');
Il ne vas pas me retrouver le fichier !!

Posté : 03 mai 2006, 15:59
par Ryle
Le nom du fichier, tu l'as effectivement puisque tu le génères pour l'enregistrer, il te suffit donc bien de l'utiliser. En revanche, le chemin n'est pas l'url du fichier, mais l'emplacement du fichier sur le serveur (exactement comme pour le move_upload) :

Si tu enregistres le fichier dans le dossier " $content_dir " avec le nom " $date.'_'.$name_file ", alors il te suffit normalement de redonner le même chemin (pour qu'il retrouve le dossier) et le même nom (pour le fichier) à ta fonction attachement :)

Posté : 03 mai 2006, 17:03
par pierrecalligaro
voici le chemin que je mets en attachment :
$mailer->attachment($content_dir .$date . '_' . $name_file, 'cv.doc');
Je n'ai pas d'erreur mais je ne reçois pas de mail. Sans attachment mon mail fonctionne correctement.

Posté : 10 mai 2006, 13:14
par pierrecalligaro
merci Ryle, c'est bien ça. Il faut simplement mettre le bon chemin.

Posté : 30 juin 2006, 21:01
par Chile
salut,
je souhaite egalement faire un envoie de mail avec fichier joint !
ou puis je trouver le fichier « class.mailer.php » ?
merci

Posté : 30 juin 2006, 21:45
par Chile
ben j'ai trouvé !
par contre je n'arrive pas a trouver la solution pour l'envoie de deux fichiers simultanement :(
et aussi :oops: , je voudrais que le formulaire puisse etre expédié meme si le fichier n'est pas joint...pour l'instant j'ai l'erreur !
si qlq sait comment !
merci