picture
février 10, 2010 PHP 6 Commentaires

Envoyer une pièce jointe à un email en PHP

PJ

Pas mal de recherches pour envoyer une simple pièce jointe à un envoi mail() PHP… pour finalement tomber sur un petit bout de code efficace que je livre ici avec quelques (petites) retouches.
testé … et approuvé !

function mail_PJ($destinataire, $nomExpediteur, $mailExpediteur, $sujet, $corps, $fichier, $typemime, $nomPJ) {

// Les headers pour un mail multiparts
$headers= "MIME-Version: 1.0 ";
$headers.= "From: \"$nomExpediteur\" <$mailExpediteur> ";
$headers.= "Content-type: multipart/mixed; "; // Chaine permettant de différencier les différentes parties du mail
$limite = '_parties_'.md5(uniqid (rand()));
$headers.= " boundary=\"----=$limite\" ";

// Première partie, corps du mail en HTML
$texte = "------=$limite ";
$texte.= "Content-type: text/html; charset=\"iso-8859-1\" ";
$texte.="<HTML><HEAD></HEAD><BODY>".nl2br($corps)."</BODY></HTML>";

// Traitement pour attacher une PJ
// D'abord on lit le fichier
$contenu = file_get_contents($fichier);
$attachement = " ------=$limite ";
$attachement .= "Content-Type: $typemime; name=\"$nomPJ\" ";
$attachement .= "Content-Transfer-Encoding: base64 ";
$attachement .= "Content-Disposition: attachment; filename=\"$nomPJ\" ";

// On joint le fichier en l'encodant en base 64
$attachement .= chunk_split(base64_encode($contenu));

// enfin on envoie le mail
mail($destinataire, $sujet, $texte.$attachement, $headers);


}

EXEMPLE :

// Destinataire du mail
$destinataire = "fifi@fifi.com";

// Expéditeur
$nomExpediteur = "Toto"
$mailExpediteur = "toto@toto.com";

// sujet du mail
$sujet = "Test de mail PHP avec pièce jointe";

// texte du corps de mail
$corps = "Testé…";
$corps .= " …et approuvé !";

// caractéristiques de la pièce jointe
// dans cet exemple, il s’agit d’un fichier pdf, il faut mettre le bon mime type
// et le bon chemin relatif (ex Windows : $fichier = "c:\temp\son.wav";)
$typemime = "application/pdf";
$fichier = "test.pdf";
$nomPJ = "Plan.pdf";

mail_PJ($destinataire, $nomExpediteur, $mailExpediteur, $sujet, $corps, $fichier, $typemime, $nomPJ);

Source : ptit_mousse de Webrankinfo

6 Responses to “Envoyer une pièce jointe à un email en PHP”

5 Commentaires

  1. Jeff dit :

    Ce Script marche parfaitement … merci

  2. pjc dit :

    Votre script marche très bien sur des pièces jointes au format Word (MIME : application/msword) mais ne fonctionne pas sur un fichier de type PDF (MIME : application/pdf).

  3. Jojo dit :

    ben voila je cherche ce script depuis des heures. Merci webtoolosa :)

  4. Laskap dit :

    Cela ne fonctionne pas.

  5. webtolosa dit :

    ? en principe, si :) je l’ai testé et cela marche : il doit y avoir un autre pb, type blocage serveur ?

One Trackback

  1. [...] Envoyer une pièce jointe à un email en PHP Pas mal de recherches pour envoyer une simple pièce jointe à un envoi mail() PHP… pour finalement tomber sur un petit bout de code efficace que je livre ici avec quelques (petites) retouches. testé … et approuvé ! function mail_PJ($destinataire, $nomExpediteur, $mailExpediteur, $sujet, $corps, $fichier, $typemime, $nomPJ) { // Les headers pour un mail multiparts $headers= "MIME-Version: 1.0 "; Envoyer une pièce jointe à un email en PHP [...]

Commentaire

Name

Mail (ne sera pas publié)

Website

Laisser ces deux champs tels quels :
:D :-) :( :o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: