[php] envoyer un mail avec une pièce jointe
15 messages
• Page 1 sur 1
-

HawkEye - WRInaute accro

- Messages: 17013
- Inscription: 23 Fév 2004
[php] envoyer un mail avec une pièce jointe
Hello,
Je cherche à réaliser un formulaire qui me permette d'envoyer un mail, via php, avec une pièce jointe (avec limitation de taille).
Jusqu'ici, tout ce que je trouve m'envoie le mail, mais pas la pj...
Est-ce que quelqu'un aurait une solution simple à proposer ?
Merci
Je cherche à réaliser un formulaire qui me permette d'envoyer un mail, via php, avec une pièce jointe (avec limitation de taille).
Jusqu'ici, tout ce que je trouve m'envoie le mail, mais pas la pj...
Est-ce que quelqu'un aurait une solution simple à proposer ?
Merci
- pelloq1
- Nouveau WRInaute

- Messages: 37
- Inscription: 6 Fév 2008
regarde ici dans les comments il y a des exemples :
http://ch2.php.net/manual/fr/ref.mail.php
http://ch2.php.net/manual/fr/ref.mail.php
-

Audiofeeline - WRInaute accro

- Messages: 5257
- Inscription: 20 Oct 2005
Upload le fichier sur le serveur et joint le lien dans l'email. 
-

ptit_mousse - WRInaute discret

- Messages: 67
- Inscription: 19 Déc 2006
Allé un petit bout de code, c'est toujours sympa le week-end et au moins on ne fait appel qu'a du pur PHP bien de chez nous... Enfin j'espère ne pas avoir fait d'erreur !
- Code: Tout sélectionner
// Destinataire du mail
$destination = 'destinataire@example.com';
// Expediteur du mail
$expediteur = 'expediteur@example.com';
// sujet du mail
$sujet = 'Mail avec PJ';
// Les headers pour un mail multiparts
$headers= "MIME-Version: 1.0\n";
$headers.= "From: $expediteur\n";
$headers.= "Content-type: multipart/mixed;\n";
// Chaine permettant de différencier les différentes parties du mail
$limite = '_parties_'.md5(uniqid (rand()));
$headers.= " boundary=\"----=$limite\"\n\n";
// Première partie, corps du mail en HTML
$texte = "------=$limite\n";
$texte.= "Content-type: text/html; charset=\"iso-8859-1\"\n\n";
$texte.="<HTML><HEAD></HEAD><BODY>Oh un mail !</BODY></HTML>";
// Traitement pour attacher une PJ
// D'abord on lit le fichier
$fichier = 'c:\temp\son.wav';
$contenu = file_get_contents($fichier);
$attachement = "------=$limite\n";
// Dans mon exemple, il s'agit d'un fichier wav, il faut mettre le bon mime type
$attachement .= "Content-Type: audio/x-wav; name=\"fichier.wav\"\n";
$attachement .= "Content-Transfer-Encoding: base64\n";
$attachement .= "Content-Disposition: attachment; filename=\"fichier.wav\"\n\n";
// Ca y est on joint le fichier en l'encodant en base 64
$attachement .= chunk_split(base64_encode($contenu));
// enfin on envoi le mail
mail($destination, $sujet, $texte.$attachement, $headers);
-

belaadel - Nouveau WRInaute

- Messages: 10
- Inscription: 20 Aoû 2006
Bonjour,
J'intérviens rapidement (et brièvement aussi) dans votre discussion car j'ai eu des problèmes:
J'ai fait des testes en mettant comme suivant:
// enfin on envoi le mail
mail($destination, $sujet, $texte.$attachement, $headers);
Je reçois une grande liste de caractères (collés au message Oh un mail !------=_parties_0b4....db Content-Type) dans le corps du message et sans le fichier en pièce jointe.
et aussi un autre teste:
// enfin on envoi le mail
mail($destination, $sujet, $texte, $headers.$attachement);
Je reçois le fichier en pièce jointe mais sans le texte dans le corps du message.
Y a-t-il une solution/explication?
Merci d'avance de votre aide.
Merci encore.
J'intérviens rapidement (et brièvement aussi) dans votre discussion car j'ai eu des problèmes:
J'ai fait des testes en mettant comme suivant:
// enfin on envoi le mail
mail($destination, $sujet, $texte.$attachement, $headers);
Je reçois une grande liste de caractères (collés au message Oh un mail !------=_parties_0b4....db Content-Type) dans le corps du message et sans le fichier en pièce jointe.
et aussi un autre teste:
// enfin on envoi le mail
mail($destination, $sujet, $texte, $headers.$attachement);
Je reçois le fichier en pièce jointe mais sans le texte dans le corps du message.
Y a-t-il une solution/explication?
Merci d'avance de votre aide.
Merci encore.
- Gattux
- Nouveau WRInaute

- Messages: 1
- Inscription: 28 Aoû 2009
Re: [php] envoyer un mail avec une pièce jointe
Bonjour à tous,
Dsl de réveiller un topic de quelque temps mais en cherchant sur Google c'est ici qu'on arrive ^^"
Donc voila ça fait un moment que je cherchais un scripte pour envoyer une pièce joint avec la fonction mail(), j'ai tenté plusieurs scripte, aucun ne marchait... Le meilleur que j'ai trouvé est celui donner ci dessus par ptit_mousse (merci en même temps
) car il fonctionnait déjà mieux que d'autres. Je ne sais pas si ça vient de moi m'enfin bon... xD
Je voulais envoyer un e-mail avec une pièce jointe en html et malgré les modifications à faire (Content-Type: text/html ...) ça ne marchai toujours pas.
Mais aujourd'hui j'ai trouvé la solution : il manquait un "\n" ici :
$attachement = "\n------=$limite\n";
Ou sinon on peut le mettre à la fin du texte (dans l'exemple après la balise </html>)
J'ai eut le même bug que belaadel (juste au dessus) et en mettant un retour a la ligne tout s'arrange chez moi ^^
Bref voila le code complet fonctionnel chez moi à 100% pour envoyer un fichier html : (ce qui est entre [crochet] est à changer chez vous)
Dsl de réveiller un topic de quelque temps mais en cherchant sur Google c'est ici qu'on arrive ^^"
Donc voila ça fait un moment que je cherchais un scripte pour envoyer une pièce joint avec la fonction mail(), j'ai tenté plusieurs scripte, aucun ne marchait... Le meilleur que j'ai trouvé est celui donner ci dessus par ptit_mousse (merci en même temps
Je voulais envoyer un e-mail avec une pièce jointe en html et malgré les modifications à faire (Content-Type: text/html ...) ça ne marchai toujours pas.
Mais aujourd'hui j'ai trouvé la solution : il manquait un "\n" ici :
$attachement = "\n------=$limite\n";
Ou sinon on peut le mettre à la fin du texte (dans l'exemple après la balise </html>)
J'ai eut le même bug que belaadel (juste au dessus) et en mettant un retour a la ligne tout s'arrange chez moi ^^
Bref voila le code complet fonctionnel chez moi à 100% pour envoyer un fichier html : (ce qui est entre [crochet] est à changer chez vous)
- Code: Tout sélectionner
<?php
//Auteur : ptit_mousse
// Destinataire du mail
$destination = "[e-mail du destinataire]";
// sujet du mail
$sujet = "[sujet du message]";
// Les headers pour un mail multiparts
$headers= "MIME-Version: 1.0\n";
$headers.= "From: \"[Nom de l'expediteur]\" <[adresse e-mail de l'expéditeur]>\n";
$headers.= "Content-type: multipart/mixed;\n";
// Chaine permettant de différencier les différentes parties du mail
$limite = '_parties_'.md5(uniqid (rand()));
$headers.= " boundary=\"----=$limite\"\n\n";
// Première partie, corps du mail en HTML
$texte = "------=$limite\n";
$texte.= "Content-type: text/html; charset=\"iso-8859-1\"\n\n";
$texte.="<HTML><HEAD></HEAD><BODY>Oh un mail !</BODY></HTML>";
// Traitement pour attacher une PJ
// D'abord on lit le fichier
$fichier = '[nom du fichier]';
$contenu = file_get_contents($fichier);
$attachement = "\n------=$limite\n";
// Dans mon exemple, il s'agit d'un fichier html, il faut mettre le bon mime type
$attachement .= "Content-Type: text/html; name=\"[nom du fichier]\"\n";
$attachement .= "Content-Transfer-Encoding: base64\n";
$attachement .= "Content-Disposition: attachment; filename=\"[nom du fichier]\"\n\n";
// Ca y est on joint le fichier en l'encodant en base 64
$attachement .= chunk_split(base64_encode($contenu));
// enfin on envoi le mail
mail($destination, $sujet, $texte.$attachement, $headers);
?>
-

ptit_mousse - WRInaute discret

- Messages: 67
- Inscription: 19 Déc 2006
Re: [php] envoyer un mail avec une pièce jointe
J'avais quelque peu oublié ce charmant bout de code mis sur WRI et il faut absolument y apporter une modification sans quoi les mails envoyés risquent de vous revenir en erreur (par Free notamment). Donc il faut ABSOLUMENT remplacer tous les \n par des \r\n
-

UsagiYojimbo - WRInaute accro

- Messages: 8575
- Inscription: 23 Nov 2005
Re: [php] envoyer un mail avec une pièce jointe
Ou plus simplement utiliser PHPMailer qui gère tout ça à la perfection : http://phpmailer.worxware.com/index.php?pg=phpmailer
-

UsagiYojimbo - WRInaute accro

- Messages: 8575
- Inscription: 23 Nov 2005
Re: [php] envoyer un mail avec une pièce jointe
Non, juste à mettre en place les différentes classes nécessaires.
-

jerkeve - Nouveau WRInaute

- Messages: 39
- Inscription: 11 Juin 2004
Re: [php] envoyer un mail avec une pièce jointe
ok une classe toute simple. Je pensais que ça ne marchais pas avec PHP4 mais si, c'est super !
Gracie mille
========================= edit
avec un ch'ti tuto plutôt bien fait en complément :
http://stephaneey.developpez.com/tutoriel/php/phpmailer/

Gracie mille
========================= edit
avec un ch'ti tuto plutôt bien fait en complément :
http://stephaneey.developpez.com/tutoriel/php/phpmailer/
15 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- Mail + pièce jointe PDF généré en PHP
- file_get_contents(), envoie mail() avec pièce jointe php
- Problème avec PHP: envoyer email avec pièce jointe PDF
- envoi mail avec pièce jointe impossible
- formulaire envoi de piece jointe php
- Un formulaire en PHP avec pièce jointe: sécurité!
- [resolu] envoie d'une piece jointe en php
- script php qui permet d'envoie une pièce jointe vers email
- formulaire avec piéce jointe
- Gmail : pièce jointe *.exe
- Google Zeitgeist 2009 : les recherches sur Google en 2009 - 01-12-2009
- Barre d'outils Google pour Firefox : version 3 - 13-12-2006
- Google écrit parfois au webmaster en cas de blacklistage - 16-09-2005
- Picasa Web Albums en français - 08-12-2006
- Marketing viral et référencement - 11-10-2004
- Le partage des tags dans Google Reader - 24-03-2006
- Comment envoyer un ping à Google Blog Search - 06-10-2006
- Ecrire un sitemap pour Google News - 25-11-2006
Consultez la description détaillée des produits ou services de Google suivants : Gmail Notifier
- Transformer des simples citations de votre site en liens
Cet outil vous permet de trouver des pages citant votre site mais ne faisant pas (encore) de lien. Il suffira parfois d'un simple mail pour transformer cette simple citation en lien (backlink).
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité


