Envoi de mail avec piece jointe

Soyez le premier à donner votre avis sur cette source.

Snippet vu 66 742 fois - Téléchargée 35 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
5 août 2009 à 15:38
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
16 sept. 2008 à 10:44
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
15 sept. 2008 à 16:55
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
24 déc. 2007 à 11:56
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
6 août 2007 à 10:34
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.