Envoie d'un mail au format html avec plusieurs pieces jointes

Soyez le premier à donner votre avis sur cette source.

Snippet vu 22 912 fois - Téléchargée 27 fois

Contenu du snippet

Le code permet d'envoyer un mail avec plusieurs pièces jointes

Source / Exemple :


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

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

//le corps du message(html)
//$texte_mail correspond a votre message au format html <html><head>.....</html>

$texte = "This is a multi-part message in MIME format.\n"; 
$texte .= "Ceci est un message est au format MIME.\n"; 

//défini la première partie du mail
$texte .= "--".$limite."\n"; 
$texte .= "Content-Type: text/html; charset=\"iso-8859-1\"\n"; 
$texte .=  "Content-Transfer-Encoding: quoted-printable\n ";
$texte .= "Content-Disposition: inline \n\n ";
$texte .= $texte_mail;
$texte .= "\n\n";
$texte .= "\n\n";

//indice de boucle permettant d'ajouter tous les fichiers joints
$i=0;

//les fichiers joints a attacher
$attachement = '';

	
//Boucle permettant l'ajout de toutes les pieces jointes
while($i < sizeof($liste_fichier))
{
  //permet de récupérer l'extension du fichier afin de définir le type mime
  $longeur = strlen ($liste_fichier[$i]);
  $longeur -=3;

  //on vérifie l'extension
 /*
   Pour les besoins de mon formulaire je devait savoir si le fichier était un .doc ou un .pdf
   il suffit uniquement de modifier cette partie pour ajout n'importe quel type de fichier

  • /
if(substr($liste_fichier[$i],$longeur) == "doc") { $type = "application/msword"; } else $type = "application/pdf"; //on Ajout chaque parties suivantes du mail avec les pieces jointes $attachement .= "--".$limite."\n"; $attachement .= "Content-Type: ".$type." name=".$liste_fichier[$i]."\n"; $attachement .= "Content-Transfer-Encoding: base64\n"; $attachement .= "Content-Disposition: attachment; filename=".$liste_fichier[$i]."\n\n"; //On lit le fichier présent sur le serveur //"rb" permet de lire des fichiers en mode binaire (utile sous windows) $fd = fopen( $liste_fichier[$i], "rb" ); $contenu = fread( $fd, filesize( $liste_fichier[$i] ) ); //encodage en base64 pour que le fichier soit lisible $attachement .= chunk_split(base64_encode($contenu)); $i++; } //on ferme ensuite toutes les parties du mail $attachement .= "\n\n--".$limite."--\n\n"; if ( mail($mail,$objet,$texte.$attachement,$mail_mime) ) { //on affiche un message indiquant l'envoi du message echo '<p align="left"><font color="green"face="Arial, Helvetica, sans-serif">Demande envoyée </font></p>'; } else { //on affiche un message indiquant l'echec de l'envoi du message echo '<p align="left"><font color="red" face="Arial, Helvetica, sans-serif"> Echec de l\'envoi de la demande</font></p>'; }

Conclusion :


Voila !!!
j'ai pas mal galèrer pour trouver des aides sur le web donc j'en fait profiter ;)

A voir également

Ajouter un commentaire

Commentaires

coucou747
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
30
au contraire, il est plutot simple
cs_promopub
Messages postés
1
Date d'inscription
samedi 20 décembre 2008
Statut
Membre
Dernière intervention
20 décembre 2008

le code et trés compliqué
cs_celtique
Messages postés
3
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
24 décembre 2006

j'apprecie beaucoup cette source néanmoins est-ce que qqn pourrait me dire pourquoi elle ne marche pas pour un envoie vers une adresse xxxxxx@aol.fr.

Merci
cs_d9thc
Messages postés
7
Date d'inscription
jeudi 9 septembre 2004
Statut
Membre
Dernière intervention
20 octobre 2006

salut a tous,

j'ai installé ce code sur mon serveur, j'ai en amont un formulaire qui upload deux fichiers sur le serveur pour aprés les mettre en piéce jointe. ça me renvoie une erreur warning :
(j'ai fait un echo de mes noms de fichiers..)

temp/1161274066memo_web__yul.doc
Warning: fread() [function.fread]: Length parameter must be greater than 0. in /sites/insyweb/www/htdocs/form.php on line 359
temp/1161274066mr.doc

Echec de l'envoi de la demande

voila si quelqu'un peut eclairer ma petite lanterne, ça serait sympa;)

Merci
badr07
Messages postés
53
Date d'inscription
mercredi 22 février 2006
Statut
Membre
Dernière intervention
15 novembre 2006

Ca sens pas un peu Trop le copier coller...
de ce site http://www.vulgarisation-informatique.com/mail.php
Je me trompe pas???

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.