begin process at 2012 02 11 00:12:25
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

E-Mail / Messagerie

 > ENVOI DE MAIL AVEC PIECE JOINTE

ENVOI DE MAIL AVEC PIECE JOINTE


 Information sur la source

Note :
4,33 / 10 - par 6 personnes
4,33 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :E-Mail / Messagerie Niveau :Initié Date de création :30/09/2004 Date de mise à jour :01/10/2004 17:09:21 Vu :48 131

Auteur : Magidev

Ecrire un message privé
Site perso
Commentaire sur cette source (21)
Ajouter un commentaire et/ou une note

 Description

Ce code n'est pas de moi mais fonctionne tres bien pour les pieces jointes dans le mail alors je vous le livre en pature lol ;

Source

  • function mail_attachement($to , $sujet , $message , $fichier , $typemime , $nom , $reply , $from){
  • $limite = "_parties_".md5(uniqid (rand()));
  • $mail_mime = "Date: ".date("l j F Y, G:i")."\n";
  • $mail_mime .= "MIME-Version: 1.0\n";
  • $mail_mime .= "Content-Type: multipart/mixed;\n";
  • $mail_mime .= " boundary=\"----=$limite\"\n\n";
  • //Le message en texte simple pour les navigateurs qui n'acceptent pas le HTML
  • $texte = "This is a multi-part message in MIME format.\n";
  • $texte .= "Ceci est un message est au format MIME.\n";
  • $texte .= "------=$limite\n";
  • $texte .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
  • $texte .= "Content-Transfer-Encoding: 7bit\n\n";
  • $texte .= $message;
  • $texte .= "\n\n";
  • //le fichier
  • $attachement = "------=$limite\n";
  • $attachement .= "Content-Type: $typemime; name=\"$nom\"\n";
  • $attachement .= "Content-Transfer-Encoding: base64\n";
  • $attachement .= "Content-Disposition: attachment; filename=\"$nom\"\n\n";
  • $fd = fopen( $fichier, "r" );
  • $contenu = fread( $fd, filesize( $fichier ) );
  • fclose( $fd );
  • $attachement .= chunk_split(base64_encode($contenu));
  • $attachement .= "\n\n\n------=$limite\n";
  • return mail($to, $sujet, $texte.$attachement, "Reply-to: $reply\nFrom:
  • $from\n".$mail_mime);
  • }
function mail_attachement($to , $sujet , $message , $fichier , $typemime , $nom , $reply , $from){ 
 $limite = "_parties_".md5(uniqid (rand())); 
  
  $mail_mime = "Date: ".date("l j F Y, G:i")."\n"; 
  $mail_mime .= "MIME-Version: 1.0\n"; 
  $mail_mime .= "Content-Type: multipart/mixed;\n"; 
  $mail_mime .= " boundary=\"----=$limite\"\n\n"; 
  
  //Le message en texte simple pour les navigateurs qui n'acceptent pas le HTML 
  $texte = "This is a multi-part message in MIME format.\n"; 
  $texte .= "Ceci est un message est au format MIME.\n"; 
  $texte .= "------=$limite\n"; 
  $texte .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n"; 
  $texte .= "Content-Transfer-Encoding: 7bit\n\n"; 
  $texte .= $message; 
  $texte .= "\n\n"; 
  
  //le fichier 
  $attachement = "------=$limite\n"; 
  $attachement .= "Content-Type: $typemime; name=\"$nom\"\n"; 
  $attachement .= "Content-Transfer-Encoding: base64\n"; 
  $attachement .= "Content-Disposition: attachment; filename=\"$nom\"\n\n"; 
  
  $fd = fopen( $fichier, "r" ); 
  $contenu = fread( $fd, filesize( $fichier ) ); 
  fclose( $fd ); 
  $attachement .= chunk_split(base64_encode($contenu)); 
  
  $attachement .= "\n\n\n------=$limite\n"; 
  return mail($to, $sujet, $texte.$attachement, "Reply-to: $reply\nFrom:
$from\n".$mail_mime); 
}

 Conclusion

Voila ;-)


 Historique

01 octobre 2004 17:09:21 :
Je m'etait trompé de source et la source que j'avais postée précédement concernait une verification d'email

 Sources du même auteur

NOMBRE DE JOURS ENTRE DEUX DATE EN UNE SEULE LIGNE
TUTORIAL : TOUS LES SECRETS DES SESSIONS ET DES COOKIES EN P...
Source avec Zip Source avec une capture APPLICATION : UN CALENDRIER VERTICAL MULTI-UTILISATEUR AVEC ...
TUTORIAL : PHP CONSTRUIT LES BASES, LES TABLES ET LES CHAMPS...
TUTORIAL : PHP DIALOGUE AVEC UNE BASE DE DONNÉES MYSQL

 Sources de la même categorie

Source avec Zip Source avec une capture FORM TO MAIL AVEC PROTECTION PAR TOKEN ET CAPTCHA CONTRÔLES ... par cod57
Source avec Zip Source avec une capture FORMULAIRE VERS COURRIEL BASIQUE AVEC CONTRÔLE CAPTCHA ANTI ... par cod57
Source avec Zip CHAT EN PHP ET JQUERY par pitchoubrazil
Source avec Zip Source avec une capture FORMULAIRE DE CHOIX MULTI-CONTACT VALIDE XHTML 1.0 TRANSITIO... par aventurier19
Source avec Zip Source avec une capture WEB MESSENGER par EvildarkEurope

Commentaires et avis

Commentaire de pouda le 01/10/2004 13:50:32

heuu stp tu peux commenter la fonction getmxrr car je ne la comprend pas trop

Commentaire de Antidote le 01/10/2004 14:35:44

Alors là j'avoue que ça me semble très très ambigue ton code.... Je n'ai pas testé mais à une première lecture :

Où est l'envoie avec pièce jointe ? Je ne vois que la connection à un serveur mail... Oo

J'aime le if (!$connection) return true Oo

Ce que je vois dans ton code c'est un checker de mail c'est tout :(

getmxrr pour info retourne la liste des serveur mail trouvé sur l'host envoyé en paramètre. (d'après ce que j'ai compris de php.net)

Et puis au minimum tape ton code clairement, indique la véritable source, met des commentaires...

(désolé c'est pas contre toi)

Commentaire de Magidev le 01/10/2004 17:11:25

Voila, l'erreur est corrigée, je m'était trompé de source lol ;-)

Commentaire de plopman le 01/10/2004 17:57:57

Joli code :) Moi j'aime bien ! Dis donc magidev tu publies plus de 5 codes par semaine :p
Allez 7/10
Plopman

Commentaire de Antidote le 01/10/2004 18:22:58

Ahhhhhhhh ça me rassure, j'en perdait mon php =p La c'est correct , je préfère ^^

Il serait intéressant que tu précise les différents type mime (pour la variable $typemime) qui sont accpter =)

La source est propre c'est bien.

Par contre je me demande si il ne manque pas des " -- " après les $limite entre les parties du mail.

Commentaire de danou le 02/12/2004 09:53:51

t'es sympa toi, mais qu'est-ce qu'on met dans la variable $typemime

t'aurais pu au moins donner l'exemple d'appel à la fonction mail_attachement

Commentaire de spirarahal le 18/01/2005 15:21:36

Le code est bien ;).
Tu as penser à un exemple d'envoi de mail avec plusieurs fichiers attachés?

Merci de le communiqué, si tu en as un.  

Commentaire de aubertjp le 05/06/2005 19:55:05

j'ai utilisé ce code avec une immense satisfaction: ça marche très bien. Seul problème: le titre de la pièce jointe, tel qu'il apparaît dans le mail du destinataire, n'a vraiment plus rien à voir avec le titre initial: c'est quelque chose comme: _var_tmp_php68rBVt.doc
Ce n'est pas très grave, car il suffit d'ouvrir la pièce pour savoir ce que c'est, mais quand même ce serait plus convivial si la pièce jointe gardait le titre qu'elle porte dans le disque dur de l'ordinateur de l'émetteur.
Y a-t-il une solution?

Jean Pierre

Commentaire de dartaloufe le 18/08/2005 10:11:39

j'ai repris le code pour faire un mail avec plusieurs pieces jointes
il a fallu faire pas mal de modification (par exemple pour lire les fichiers il fau mettre 'rb' et non pas pas 'r' mais la base est bonne.
par contre je n'arrive pas a voir le texte du mail.
J'ai changer le type en text/html ce qui correspond au corps de mon mail mais rien ne s'affiche ;(

Commentaire de kartouche le 26/10/2005 14:13:29

salut,
cela fait deux jours que je m'arrache les cheveux!!!!
le script fonctionne bien ms j'ai un souci avec la piece jointe...

je veux envoyer un fichier texte;
si le fichier fais environ 200 octets ca marche;
si il fait plus, le reste des infos est innutilisable!!!!

Quelqu'un a t il ce probleme???

Commentaire de cbil le 21/07/2006 16:16:19

Slt tous, ca date mais ce code marche bien sauf que j'ai le meme probleme que Kartouche...la taille du fichier envoyé est limité...comment y remedier ?

Merci a+
Cbil

Commentaire de badr07 le 23/08/2006 17:34:34

Marche pas ton code...
1/10

Commentaire de creation3w le 14/02/2007 12:12:21

Bonjour,
Si le code marche je pense que pour ceux pour qui ça ne marche pas c'est qu'ils savent pas qu'il faut faire appel à une fonction par ailleur j'ai modifié le script pour l'envoi de deux pieces jointes, Par ailleur ça marche avec hotmail mais il est reçu en spam mais ça je pense que ça viens de mon serveur mail ;)
alors pour ceux qui ne savent pas  vous créer un fichier php dans lequel vous mettez le code suivant :
[code]
<?php
function mail_attachement($to , $sujet , $message , $fichier1 , $typemime1 , $nom1, $fichier2 , $typemime2 , $nom2 , $reply , $from){
     $limite = "_parties_".md5(uniqid (rand()));
    
     $mail_mime = "Date: ".date("l j F Y, G:i")."\n";
     $mail_mime .= "MIME-Version: 1.0\n";
     $mail_mime .= "Content-Type: multipart/mixed;\n";
     $mail_mime .= " boundary=\"----=$limite\"\n\n";
    
     //Le message en texte simple pour les navigateurs qui n'acceptent pas le HTML
     $texte = "This is a multi-part message in MIME format.\n";
     $texte .= "Ceci est un message est au format MIME.\n";
     $texte .= "------=$limite\n";
     $texte .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
     $texte .= "Content-Transfer-Encoding: 7bit\n\n";
     $texte .= $message;
     $texte .= "\n\n";
    
     //le fichier1
     $attachement = "------=$limite\n";
     $attachement .= "Content-Type: $typemime1; name=\"$nom1\"\n";
     $attachement .= "Content-Transfer-Encoding: base64\n";
     $attachement .= "Content-Disposition: attachment; filename=\"$nom1\"\n\n";
    
     $fd1 = fopen( $fichier1, "r" );
     $contenu1 = fread( $fd1, filesize( $fichier1 ) );
     fclose( $fd1 );
     $attachement .= chunk_split(base64_encode($contenu1));
    
     $attachement .= "\n\n\n------=$limite\n";

//le fichier2
     $attachement .= "------=$limite\n";
     $attachement .= "Content-Type: $typemime2; name=\"$nom2\"\n";
     $attachement .= "Content-Transfer-Encoding: base64\n";
     $attachement .= "Content-Disposition: attachment; filename=\"$nom2\"\n\n";
    
     $fd2 = fopen( $fichier2, "r" );
     $contenu2 = fread( $fd2, filesize( $fichier2 ) );
     fclose( $fd2 );
     $attachement .= chunk_split(base64_encode($contenu2));
    
     $attachement .= "\n\n\n------=$limite\n";




     return mail($to, $sujet, $texte.$attachement, "Reply-to: $reply\nFrom:
     $from\n".$mail_mime);
     }
?>
[/code]
et ensuite vous créez un autre fichier php dans lequel il y a votre formulaire avec les input type files et ou vous appellez la fonction, ensuite à vous de remplacer le nom des variables dans l'appel de la fonction en fonction à quoi ça correspond dans la fonction elle meme dans l'exemple j'ai pas afficher toutes mes variables mais c'est du garantie 100% workly ne mettez pas que ça marche pas
[code]
<?php
require("fichierouy'amafonction.php");

$to = "destinataire@exemple.com";
$sujet = "test avec un envoi de 2 fichiers joints";
$message = "ça marche nikel?";

mail_attachement($to , $sujet , $message , $cv , $cvtype , $cvname, $motiv , $motivtype , $motivname , $mail , $mail);
?>
[/code]
Noter aussi à quoi correspondent $fichier1ou2 $typemine1ou2 $nom1ou2
[code]
<?php
$fichier = 'aucheminversvotrefichiersurleserveur/'.$_FILES['nomduchampfilesdevotreformulaire']['name'];

$nom = $_FILES['nomduchampfilesdevotreformulaire']['name'];

$typemine = $_FILES['nomduchampfilesdevotreformulaire']['type'];
?>
[/code]

Commentaire de creation3w le 14/02/2007 12:15:55

désolé je connais la balise du forum pour insertion de code de plus je peux pas modifer mon post ;(

Commentaire de merkhaled le 19/02/2007 20:39:51

excellente source, je met 9/10, domage que le script est fait uniquement pour deux pièces jointes, vous me direz on peut ajouter un troisième ficher... est ce qu'il y a une possibilité de modifier cette fonction pour qu'on puisse ajouter autant de pièces jointes qu'on veut sans a avoir a passer tous ces paramètres?
exemple : array $pieces[][]
dont

pieces[0][0] :nom
pieces[0][1] :type
pieces[0][2] :nom

pieces[1][0] :nom
pieces[1][1] :type
pieces[1][2] :nom


Merci d'avance pour ceux qui participent








www.khassur.Fr

Commentaire de archaic le 30/07/2007 10:40:52

merci beaucoup, ça marche nikel !

Commentaire de Matcrash le 06/08/2007 10:34:10

Moi j'ai des souci, je recois bien le mail avec la pièce jointe mais elle s'appelle "-pas de nom de fichier-2-", sans extension et quand je remet l'extension et que je l'ouvre il m'affiche tout un tas de caractère... quelqu'un pourrait m'aider s'il vous plait ???

Commentaire de jisse_fr le 24/12/2007 11:56:49

Personnellement j'ai utilisé le code du message posté par creation3w le 14/02/2007, et ca fonctionne très bien.

Commentaire de sapience le 15/09/2008 16:55:27

Bonjour,
j'ai des soucis avec l'envoi de fichiers attachés de type texte !
Je reçois bien un email avec mes 5 fichiers attachés mais le contenu des fichiers reçu est toujours codé en base 64 !
Est-ce que quelqu'un peut m'aider ?
Voici mon code :

$aFicPieceJointe[] = "$fic1.txt";
$aFicPieceJointe[] = "$fic2.txt";
$aFicPieceJointe[] = "$fic3.txt";
$aFicPieceJointe[] = "$fic4.txt";
$aFicPieceJointe[] = "$fic5.txt";

$objet_mail = "bidon"; // objet du mail
$desti_mail = "bidon@bidon.com";// destinataire

// permet de définir les différentes parties du mail
$limite = "----=_Part_".md5(uniqid(rand()));

// headers du mail
$headers  ="From: bidon@bidon.com\n";
$headers .="MIME-Version: 1.0\n";
$headers .="Content-Type: multipart/mixed; boundary=\"".$limite."\"\r\n";

// corps du message
// partie texte
$texte  = "--".$limite."\n";
$texte .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
$texte .= "Texte du mail bidon\n\n";

// fichiers joints à attacher
$attachement = "";

// tableau des fichiers à mettre en pièces jointes
if (is_array($aFicPieceJointe))
{
   for ($i=0 ; $i<count($aFicPieceJointe) ; $i++)
   {
$attachement .= "--".$limite."\n";
$attachement .= "Content-Type: text/plain; charset=\"iso-8859-1\" name=\"".$aFicPieceJointe[$i]."\"\n";
$attachement .= "Content-Transfert-Encoding: base64\n";
$attachement .= "Content-Disposition: attachment; filename=\"".$aFicPieceJointe[$i]."\"\n\n";

// lecture du fichier présent sur le serveur
$fd = fopen($aFicPieceJointe[$i],"rb");
$contenu = fread($fd,filesize($aFicPieceJointe[$i]));
        fclose($fd);

// encodage en base64 pour que le fichier soit lisible
$attachement .= chunk_split(base64_encode($contenu));
   }

   // on ferme ensuite toutes les parties du mail
   $attachement .= "\n\n--".$limite."--\n\n";

   // on envoi le mail
   if (mail($desti_mail,$objet_mail,$texte.$attachement,$headers))
   {
      // envoi réussi
   }
   else
   {
      // envoi raté
   }

}// if (is_array($aFicPieceJointe))

Merci d'avance.

Commentaire de sapience le 16/09/2008 10:44:58

Bonjour,

oubliez mon message précédent ! J'ai trouvé, il faut juste que je me repose un peu....
et que j'enlève mes 't' au mot tranfert :
"Content-Transfer-Encoding" et non "Content-Transfert-Encoding"

bonne journée

Commentaire de mooez le 05/08/2009 15:38:47

Bonjour,

Est il possible d'envoyer le mail avec une pièce jointe sans passer par le formulaire. C'est a dire avec uniquement l'emplacement du fichier sur le serveur.

merci

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 5,944 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales