Envoi de mail avec piece jointe

Soyez le premier à donner votre avis sur cette source.

Snippet vu 59 717 fois - Téléchargée 33 fois

Contenu du snippet

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 / Exemple :


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 ;-)

A voir également

Ajouter un commentaire

Commentaires

cs_mooez
Messages postés
2
Date d'inscription
lundi 24 décembre 2007
Statut
Membre
Dernière intervention
5 janvier 2011
-
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
sapience
Messages postés
2
Date d'inscription
vendredi 28 juillet 2006
Statut
Membre
Dernière intervention
16 septembre 2008
-
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
sapience
Messages postés
2
Date d'inscription
vendredi 28 juillet 2006
Statut
Membre
Dernière intervention
16 septembre 2008
-
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.
jisse_fr
Messages postés
11
Date d'inscription
jeudi 14 avril 2005
Statut
Membre
Dernière intervention
9 mars 2011
-
Personnellement j'ai utilisé le code du message posté par creation3w le 14/02/2007, et ca fonctionne très bien.
Matcrash
Messages postés
1
Date d'inscription
lundi 6 août 2007
Statut
Membre
Dernière intervention
6 août 2007
-
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 ???

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.