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

Soyez le premier à donner votre avis sur cette source.

Snippet vu 21 315 fois - Téléchargée 28 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
Messages postés
1
Date d'inscription
vendredi 12 décembre 2008
Statut
Membre
Dernière intervention
12 décembre 2008

juste pour savoir s'il y a une amelioration dans les codes. Je viens de l'essayer mais ca ne marche toujours pas
Messages postés
14
Date d'inscription
lundi 1 novembre 2004
Statut
Membre
Dernière intervention
17 mars 2010

Bonjour,

Merci pour ce code, ça me permet de débloquer mon problème.
Messages postés
11
Date d'inscription
jeudi 10 octobre 2002
Statut
Membre
Dernière intervention
15 avril 2006

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. ++
Messages postés
2
Date d'inscription
dimanche 7 novembre 2004
Statut
Membre
Dernière intervention
9 février 2005

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
Messages postés
3
Date d'inscription
dimanche 13 avril 2003
Statut
Membre
Dernière intervention
2 décembre 2004

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.