Comment attacher fichier par mail en php

Résolu/Fermé
mad92men Messages postés 130 Date d'inscription dimanche 28 octobre 2012 Statut Membre Dernière intervention 10 novembre 2020 - 19 mars 2013 à 23:48
 Alex - 10 déc. 2013 à 16:23
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
20 mars 2013 à 11:39
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 dimanche 28 octobre 2012 Statut Membre Dernière intervention 10 novembre 2020 4
20 mars 2013 à 22:11
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
21 mars 2013 à 11:39
Il y a un message d'erreur?
0
mad92men Messages postés 130 Date d'inscription dimanche 28 octobre 2012 Statut Membre Dernière intervention 10 novembre 2020 4
21 mars 2013 à 12:56
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
21 mars 2013 à 15:49
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 dimanche 28 octobre 2012 Statut Membre Dernière intervention 10 novembre 2020 4
21 mars 2013 à 16:47
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
21 mars 2013 à 17:01
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 dimanche 28 octobre 2012 Statut Membre Dernière intervention 10 novembre 2020 4
21 mars 2013 à 20:22
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 jeudi 24 janvier 2013 Statut Membre Dernière intervention 3 novembre 2022 5
Modifié par charcom le 22/03/2013 à 09:44
- $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 dimanche 28 octobre 2012 Statut Membre Dernière intervention 10 novembre 2020 4
22 mars 2013 à 21:23
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 jeudi 24 janvier 2013 Statut Membre Dernière intervention 3 novembre 2022 5
23 mars 2013 à 11:39
C'est beau l'émotion :-)))
0
je confirme. ce code marche parfaitement
0
thirrell Messages postés 1 Date d'inscription samedi 15 juin 2013 Statut Membre Dernière intervention 15 juin 2013
Modifié par thirrell le 15/06/2013 à 11:35
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