Comment attacher fichier par mail en php

Résolu
mad92men Messages postés 130 Date d'inscription   Statut Membre Dernière intervention   -  
 Alex -
Bonjour,

Je cherche un script qui me permet d'attacher un fichier pdf (fichier des conditions generales) à mes mails envoyés par mon formulaire. j'ai trouvé quelques codes sur le net mais aucun ne marche.

j'espère que j'ai été clair ! Si quelqu'un a une solution à mon problème, je lui en serai infiniment reconnaissant.

cordialement




A voir également:

11 réponses

Utilisateur anonyme
 
As tu regardé de ce côté là ?
https://www.commentcamarche.net/faq/2761-langages-envoyer-un-mail-avec-piece-jointe
0
mad92men Messages postés 130 Date d'inscription   Statut Membre Dernière intervention   4
 
merci kyser pour le tuto. j'ai essayé de rajouter le code dans mon script mais je reçois toujours pas la mon fichier pdf en piece jointe.

voici mon code :


<?php
if(isset($_POST['envoyer'])) {
$civilite=$_POST['civilite'];
$nom=$_POST['nom'];
$prenom=$_POST['prenom'];
$email=$_POST['email'];


$contenu="<br/>Nom: $civilite $nom $prenom <br/><br/>Email: $email<br/>";

$contenu=str_replace(chr(92),"",$contenu);
$contenu=str_replace(chr(10),"<br/>",$contenu);

$headers="From: <$email>\n";
$headers.="Content-Type: text/html; charset=UTF-8\n";

$to="xxxx@xxx.fr";
$objet="$demande";
mail($to, $objet, $contenu, $headers);
}

boundary="didondinaditondelosdudosdodudundodudindon"\r\n\n
$body="--". $boundary ."\n
$fichier=file_get_contents('./condition-generales-de-vente.pdf');
$fichier=chunk_split( base64_encode($fichier) );
$body = $body . "--" .$boundary. "\n
Content-Type: application/msword; name=\"condition-generales-de-vente.pdf\"\r\n
Content-Transfer-Encoding: base64\r\n
Content-Disposition: attachment; filename=\"condition-generales-de-vente.pdf\"\r\n\n
$fichier";

//Fermeture de la frontière
$body = $body . "--" . $boundary ."--";

$destinataire = "$email";
$expediteur = "xxxx@xxx.fr";
$reponse = $expediteur;

$thmess = "<html><body> mon texte </body></html>



mail($destinataire,
"Validation de prise en charge",
$thmess, $fichier,
"From: Mon Site<$expediteur>\r\n".
"Reply-To: $reponse\r\n".
"Content-Type: text/html; charset=UTF-8\n");



?>
merci d'avance pour votre aide.
0
Utilisateur anonyme
 
Il y a un message d'erreur?
0
mad92men Messages postés 130 Date d'inscription   Statut Membre Dernière intervention   4
 
Non je reçois un mail bizarre avec plein de chiffre et des lettres.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
 
Ca fonctionne normalement comme ça, il y a quelques petites erreurs de guillemet de ton code il me semble :
Essai chez toi !

<?php
//if(isset($_POST['envoyer'])) {
$civilite="M";
$nom="plop";
$prenom="blop";
$email="moi@moi.moi";


$contenu="<br/>Nom: $civilite $nom $prenom <br/><br/>Email: $email<br/>";

$contenu=str_replace(chr(92),"",$contenu);
$contenu=str_replace(chr(10),"<br/>",$contenu);

$blablabla='blablabla';
$headers="From: ".$email."\r\nMIME-Version: 1.0\r\n
Content-Type: multipart/mixed; boundary=\"$blablabla\"\r\n\n";

$fichier=file_get_contents('./bidule.txt');
$fichier=chunk_split( base64_encode($fichier) );

//Écriture de la pièce jointe
$body = $body . "--" .$boundary. "\n
Content-Type: application/msword; name=\"nom_fichier\"\r\n
Content-Transfer-Encoding: base64\r\n
Content-Disposition: attachment; filename=\"nom_fichier\"\r\n\n
$fichier";

$to="xxx@xxx.com";
$objet="demande";
mail($to, $objet, $contenu, $headers);

//}

?> 
0
mad92men Messages postés 130 Date d'inscription   Statut Membre Dernière intervention   4
 
Merci beaucoup pour ton aide kyser, je testerai ton script ce soir et je tiendrai au courant. En fait une dernière question $blablabla='blablabla'; ça correspond a quoi? Et name=\"nom_fichier\"\r\n je rajoute l'extension de mon fichier (.pdf) ou je mets uniquement le nom de fichier?

Merci
0
Utilisateur anonyme
 
Le $blablabla ici ne sert à rien tu peux le retirer, c'est comme si c'etait un marqueur pour identifier différentes parties du mail, et le name=\"nom_fichier\" c'est juste le nom à l'affichage du mail reçu, c'est lorsqu'on utilise la fonction file_get_contents un peu plus haut qu'on instancie le nom du fichier à ajouter.

Y a pas de soucis si ça t'as aidé c'est cool ;)
0
mad92men Messages postés 130 Date d'inscription   Statut Membre Dernière intervention   4
 
encore merci pour t explication kyser :)

j'ai testé ce que tu ma donné toute à lheure et toujours rien je reçois tjr un mail sans pièce jointe.

voici le code :

<?php
if(isset($_POST['envoyer'])) {
$civilite=$_POST['civilite'];
$nom=$_POST['nom'];
$prenom=$_POST['prenom'];
$email=$_POST['email'];





$contenu="<br/>Nom: $civilite $nom $prenom <br/><br/>Email: $email<br/>";


$contenu=str_replace(chr(92),"",$contenu);
$contenu=str_replace(chr(10),"<br/>",$contenu);

$blablabla='blablabla';
$headers="From: ".$email."\r\nMIME-Version: 1.0\r\n
Content-Type: multipart/mixed; boundary=\"$blablabla\"\r\n\n";
$fichier=file_get_contents('../www/condition-generales-de-vente.pdf');
$fichier=chunk_split( base64_encode($fichier) );

//Écriture de la pièce jointe
$body = $body . "--" .$boundary. "\n
Content-Type: application/msword; name=\"nom_fichier\"\r\n
Content-Transfer-Encoding: base64\r\n
Content-Disposition: attachment; filename=\"nom_fichier\"\r\n\n
$fichier";


$to="xxxx@xxxx.com";
$objet="$demande";
mail($to, $objet, $contenu, $headers);
}
?>


et voici ce que je reçois




Content-Type: multipart/mixed; boundary="blablabla"

<br/>Nom: xxxxx<br/><br/>Email: xxxxxx@xxxxx.com<br/><br/>


merci bq pour ton aide.
0
charcom Messages postés 61 Date d'inscription   Statut Membre Dernière intervention   5
 
- $contenu : semble incorrect (concaténation)
- Où est renseigné ton $demande qui se trouve dans $objet ?? Par ailleurs, ton $objet devrait être = $demande; sans les "
- Ton $email est celui du destinataire ou de l'expéditeur ?? Je me pose la question car tu le mets en expéditeur mais tu le renseignes dans le contenu, avec les coordonnées du destinataire, bizarre...
- le titre de ton fichier est-il bon ? il y a une faute d'orthographe (condition sans S) donc est-ce volontaire ? et le chemin est-il bon : est-ce normal le ../ avant la racine du site ?

Si le nom de ton fichier est OK, ce code devrait mieux fonctionner (il faut d'abord y renseigner ce qui manque : infos expéditeur et objet) :

$civilite = $_POST['civilite'];   
$nom = $_POST['nom'];   
$prenom = $_POST['prenom'];   
$email = $_POST['email'];    

    $destination = $email;   
    $sujet = "OBJET DU MAIL";  // à renseigner   
    $headers= "MIME-Version: 1.0\n";   
    $headers.= "From: \"NOM EXPE\" <expe@site.fr>\n";  // à renseigner   
    $headers.= "Content-type: multipart/mixed;\n";   
    $limite = '_parties_'.md5(uniqid (rand()));   
    $headers.= " boundary=\"----=$limite\"\n\n";   
       
    $texte = "------=$limite\n";   
    $texte.= "Content-type: text/html; charset=\"iso-8859-1\"\n\n";   
    $texte.= "<br>Nom : ".$civilite." ".$nom." ".$prenom."<br><br>Email : ".$email."<br>";   
       
    $fichier1 = "condition-generales-de-vente";   
    $fichier = "../www/".$fichier1.".pdf";   
    $contenu = file_get_contents($fichier);   
    $attachement = "\n------=$limite\n";   
    $attachement .= "Content-Type: application/pdf; name=\$fichier1\"\n";   
    $attachement .= "Content-Transfer-Encoding: base64\n";   
    $attachement .= "Content-Disposition: attachment; filename=\$fichier1.".pdf\"\n\n";   
    $attachement .= chunk_split(base64_encode($contenu));   
       
    mail($destination, $sujet, $texte.$attachement, $headers);
0
mad92men Messages postés 130 Date d'inscription   Statut Membre Dernière intervention   4
 
olalala ça marche enfin (émotion) !!!!! un grand merci à charcom et kyser, vous m'avez vraiment sauver la vie. j'ai galéré pendant 2 semaines et finalement j'ai eu la réponse ici. mille merci les gars.

je mets RESOLU.
0
charcom Messages postés 61 Date d'inscription   Statut Membre Dernière intervention   5
 
C'est beau l'émotion :-)))
0
Alex
 
je confirme. ce code marche parfaitement
0
thirrell Messages postés 1 Date d'inscription   Statut Membre Dernière intervention  
 
sil vous plait Monsieurs, si c un fichier html ke je voudrais joindre, où je le placerais sur c script si dessus??? et jne comprenp pas "base64",keske ça vudrait dire???

AIDEZ MOI, c vrement urgent !!!!!
0