Envoi mail + pièce jointe

Résolu/Fermé
Mopire Messages postés 23 Date d'inscription jeudi 14 avril 2011 Statut Membre Dernière intervention 6 juin 2011 - Modifié par Mopire le 15/04/2011 à 11:54
mpmp93 Messages postés 6648 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 28 septembre 2015 - 15 avril 2011 à 14:18
Bonjour a tous,

Je souhaite envoyé un mail avec une pièce jointe mais je galère.
J'arrive à envoyé un mail, mais au niveau de la pièce jointe ça déconne.

Voici mon code :

<?php 

   $nom = $_POST['nom']; 
   $prenom = $_POST['prenom']; 
   $email = $_POST['email']; 
   $point = strpos($email,"."); 
   $aroba = strpos($email,"@"); 
   $service = $_POST['service']; 
   $objet = $_POST['objet']; 
   $contenu = $_POST['contenu']; 
   $captcha = $_POST['captcha']; 
   $nom_du_fichier = $_POST['nom_du_fichier']; 
    
    
$mail = $email; // Déclaration de l'adresse de destination. 
if (!preg_match("#^[a-z0-9._-]+@().[a-z]{2,4}$#", $mail)) // On filtre les serveurs qui présentent des bogues. 
{ 
 $passage_ligne = "\r\n"; 
} 
else 
{ 
 $passage_ligne = "\n"; 
} 
//=====Déclaration des messages au format texte et au format HTML. 

$message_html = "<html><head> 
              </head> 
              <body bgcolor=#FFFFFF> 
               
              <p>Message envoyer</p>
               
              </body></html>"; 
//========== 
  
//=====Lecture et mise en forme de la pièce jointe. 
$fichier   = fopen("$nom_du_fichier", "r"); 
$attachement = fread($fichier, filesize("$nom_du_fichier")); 
$attachement = chunk_split(base64_encode($attachement)); 
fclose($fichier); 
//========== 
  
//=====Création de la boundary. 
$boundary = "-----=".md5(rand()); 
//========== 
  
//=====Définition du sujet. 
$sujet = "$objet"; 
//========= 
  
//=====Création du header de l'e-mail. 
$header = "From: \"Mr/Mme $nom\" <$email>".$passage_ligne; 
$header.= "Content-Type: multipart/mixed;".$passage_ligne." boundary=\"$boundary\"".$passage_ligne; 
//========== 
  
//=====Création du message. 
$message = $passage_ligne."--".$boundary.$passage_ligne; 
$message.= "Content-Type: multipart/alternative;".$passage_ligne." boundary=\"$boundary_alt\"".$passage_ligne; 
$message.= $passage_ligne."--".$boundary_alt.$passage_ligne; 
//=====Ajout du message au format texte. 
$message.= "Content-Transfer-Encoding: 8bit".$passage_ligne; 
$message.= $passage_ligne.$message_txt.$passage_ligne; 
//========== 
  
$message.= $passage_ligne."--".$boundary_alt.$passage_ligne; 
  
//=====Ajout du message au format HTML. 
$message.= "Content-Type: text/html; charset=\"ISO-8859-1\"".$passage_ligne; 
$message.= "Content-Transfer-Encoding: 8bit".$passage_ligne; 
$message.= $passage_ligne.$message_html.$passage_ligne; 
//==========  
  
$message.= $passage_ligne."--".$boundary.$passage_ligne; 
  
//=====Ajout de la pièce jointe. 
$message.= "Content-Type: application/pdf; name=\"./$nom_du_fichier\"".$passage_ligne; 
$message.= "Content-Transfer-Encoding: base64".$passage_ligne; 
$message.= "Content-Disposition: attachment; filename=\"$nom_du_fichier\"".$passage_ligne; 
$message.= $passage_ligne.$attachement.$passage_ligne.$passage_ligne; 
$message.= $passage_ligne."--".$boundary."--".$passage_ligne;  
//==========  
//=====Envoi de l'e-mail. 
mail($mail,$sujet,$message,$header); 
  
//========== 
?> 




A voir également:

1 réponse

mpmp93 Messages postés 6648 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 28 septembre 2015 1 339
15 avril 2011 à 14:18
Bonjour,

dans Zend Framework, il y a ça tout fait:

 $mail = new Zend_Mail();

      // construction du message
      $mail->createAttachment($uneChaineBinaire);
      $mail->createAttachment($monImage,
                              'image/gif',
                              Zend_Mime::DISPOSITION_INLINE,
                              Zend_Mime::ENCODING_BASE64);


Tout est là:

http://framework.zend.com/manual/fr/zend.mail.attachments.html

A+
0