Envoi de mail avec fichier attaché (plus qu'à faire copier coller)

5/5 (43 avis)

Snippet vu 21 554 fois - Téléchargée 30 fois

Contenu du snippet

Un script pour envoyé des mails avec fichiers attachés.
J'ai modifié quelques peu le script qui ne fonctionait plus avec PHP5. Là, tout doit marcher sans problèmes.
J'améliorerai vraiment le script cet été quand jaurais un peu plus de temps.
Dites moi si vous avez rencontré des problèmes ou si tout fonctionne correctement.
PS: N'oubliez pas de créer un dossier nommé "upload" sur le serveur utilisé.

Source / Exemple :


<?php
  
function mail_attach($to , $sujet , $message , $fichier, $type, $name , $from)
 {
   $mail_mime = "MIME-Version: 1.0\n";
   $mail_mime .= "Content-Type: multipart/mixed;\n";
   $mail_mime .= " boundary=\"----=_NextPart\"\n\n";
   $texte = "------=_NextPart\n";
   $texte .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
   $texte .= "Content-Transfer-Encoding: 32bit\n\n";
   $texte .= stripslashes($message);
   $texte .= "\n\n";
   $attachement = "------=_NextPart\n";
   $attachement .= "Content-Type:  $type; name=\"$name\"\n";
   $attachement .= "Content-Transfer-Encoding: base64\n";
   $attachement .= "Content-Disposition: attachment; filename=\"$name\"\n\n";
   $fp = fopen($fichier, "rb");
   $buff = fread($fp, filesize($fichier));
   fclose($fp);
   $attachement .= chunk_split(base64_encode($buff));
   $attachement .= "\n\n\n------=_NextPart\n";
   $sujet = stripslashes($sujet);
   $from = stripslashes($from);
   if (file_exists($fichier))
      {
      return mail($to, $sujet, $texte.$attachement, "From: $from\n".$mail_mime);
      }
      else
      {
      return mail($to, $sujet, $texte, "From: $from\n".$mail_mime);
      }
  
 }
  
  
  
 if ($_POST['formulaire']==1 )
  
 {
        $name = $_FILES['Parcourir']['name'];
        $type = $_FILES['Parcourir']['type'];

        if (is_uploaded_file($_FILES['Parcourir']['tmp_name']))
        {
         move_uploaded_file($_FILES['Parcourir']['tmp_name'],$DOCUMENT_ROOT."/upload/".$name);
         $fichier = $DOCUMENT_ROOT."/upload/".$name;
        }
  
   if (@mail_attach($_POST['to'] , $_POST['sujet'] , $_POST['message'] , $fichier, $type, $name , $_POST['from']))
   {
    echo "<script language=\"javascript\">";
    echo "alert('Votre message a été envoyé')";
    echo "</script>";
   }
    else
   {
     echo "<script language=\"javascript\">";
     echo "alert('Votre message n'a pas pu être envoyé !!!')";
     echo "</script>";
   }
  
 @unlink ($DOCUMENT_ROOT."/upload/".$name);
 }
  
 ?>
  
  
 <html>
 <body>
 <form ENCTYPE="multipart/form-data" action=# method="POST">
 <center>
 <br>
 De: <input type="text" name = "from" size="30"><br>
 Destinataire: <input type="text" name = "to" size="30"><br>
 Sujet: <input type="text" name = "sujet" size="30"><br><br>
 Texte :<br>
 <textarea name="message" rows="15" cols="40"></textarea><br>
 <input type="file" name="Parcourir">
 <input type="hidden" name="formulaire" value="1">
 <input type="submit" value="OK"></center>
 </form>
 </body>
 </html>

Conclusion :


N'oubliez pas de créer un fichier nommé "upload" sur le serveur utilisé !!!

A voir également

Ajouter un commentaire Commentaires
ipalakot Messages postés 1 Date d'inscription vendredi 12 décembre 2008 Statut Membre Dernière intervention 12 décembre 2008
12 déc. 2008 à 23:01
juste pour savoir s'il y a une amelioration dans les codes. Je viens de l'essayer mais ca ne marche toujours pas
vienbv Messages postés 14 Date d'inscription lundi 1 novembre 2004 Statut Membre Dernière intervention 17 mars 2010
16 nov. 2007 à 00:22
Bonjour,

Merci pour ce code, ça me permet de débloquer mon problème.
Biroto Messages postés 11 Date d'inscription jeudi 10 octobre 2002 Statut Membre Dernière intervention 15 avril 2006
10 févr. 2005 à 20:03
Tu ne peux pas utiliser la fonction mail() si tu na pas configurer config.ini et si tu na pas installé un serveur smtp. essaye ce script sur un serveur apache permetant l'utilisation de mail(). Cela devrai fonctionner. ++
cs_benrabia Messages postés 2 Date d'inscription dimanche 7 novembre 2004 Statut Membre Dernière intervention 9 février 2005
9 févr. 2005 à 16:49
moi j'ai mis copier coller mais j'ai separer le fichier html du fichier php en fesant action="form.php" sauf qu'il m'envoie cette erreur:
Notice: Undefined variable: formulaire in c:\program files\easyphp1-7\www\site aloa\form\formu.php on line 37
formulaire c le nom de la place où se mettera le fichier joint
cs_danou Messages postés 3 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 2 décembre 2004
2 déc. 2004 à 11:19
c'est vrai si ca marche avec dreamweaver ...
mais comment faire avec celui-ci?
Afficher les 43 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.