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
Alex - 10 déc. 2013 à 16:23
A voir également:
- Comment attacher fichier par mail en php
- Fichier rar - Guide
- Yahoo mail - Accueil - Mail
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier host - Guide
11 réponses
Utilisateur anonyme
20 mars 2013 à 11:39
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
https://www.commentcamarche.net/faq/2761-langages-envoyer-un-mail-avec-piece-jointe
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
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.
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.
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
21 mars 2013 à 12:56
Non je reçois un mail bizarre avec plein de chiffre et des lettres.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Utilisateur anonyme
21 mars 2013 à 15:49
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 !
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); //} ?>
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
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
Merci
Utilisateur anonyme
21 mars 2013 à 17:01
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 ;)
Y a pas de soucis si ça t'as aidé c'est cool ;)
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
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.
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.
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
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) :
- 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);
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
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.
je mets RESOLU.
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
23 mars 2013 à 11:39
C'est beau l'émotion :-)))
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
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 !!!!!
AIDEZ MOI, c vrement urgent !!!!!