Envoi mail avec piece jointe

Résolu
cs_fredhot Messages postés 5 Date d'inscription mardi 16 décembre 2008 Statut Membre Dernière intervention 20 mai 2014 - 11 oct. 2010 à 12:28
cs_fredhot Messages postés 5 Date d'inscription mardi 16 décembre 2008 Statut Membre Dernière intervention 20 mai 2014 - 16 oct. 2010 à 12:35
Bonjour à tous,
depuis quelques jours j'essaie d'envoyer des mails avec une pièce jointe.
Sans résultat malgré mes recherches sur le net et divers essai.
J'ai trouvé pas mal de code mais impossible de les faire fonctionner.
L'envoi du texte(html) fonctionne.
Voici mon code....le code que j'essaie d'adapter à mes besoins.
La pièce jointe que j'essaie d'envoyer est un jpg qui ce trouve au même emplacement que le fichier ci-dessous.
Merci d'avance.

<?php
 
include("../Template/Connect/Connexionbd.php");
$Css        = ' body{ margin: 0;padding: 0;font-family: Georgia, "Times New Roman", Times, serif;} ';
                                                                 
$Texte      = 'Mon texte ';
 
echo '[admin/admin_menu.php retour Menu]

';
 
//-sujet
            $titre      = 'NewsLetter - ';
            $sujet      = utf8_decode( $titre.'Mon Sujet');
 
// Recup Nom & Mail expediteur 
            $Res_Exp      = mysql_query ("select * from User_Exp");
            $Nom_Exp      = mysql_result($Res_Exp,0,"Nom_Exp");
            $Mail_Exp     = mysql_result($Res_Exp,0,"Mail_Exp");
 
// Recup Destinataire
           $sql = "SELECT * FROM User_Dest";
           $req = mysql_query($sql) or die('Erreur SQL !
'.$sql.'
'.mysql_error());
while($Dest=mysql_fetch_assoc($req))
 
{
 
// destinataire     
          $destinataire = $Dest["Mail_Dest"]; 
     
       //$email_reply   ='email_de_reponse@fai.fr';
     
 // message texte     
         $message_texte ='Bonjour,'."\n\n".'Voici un message au format texte';
 // message html
        $message_html   ='<html><head> <title>'.$sujet.'</title><style type="text/css" media="screen">'.$Css.'  </style></head> '.utf8_decode($Texte).' </html>';                                                
  
  
     $frontiere  = '-----=' . md5(uniqid(mt_rand()));
 
//Nom Expediteur - Mail Expediteur
     $headers  = 'From: '.$Nom_Exp.'  <'.$Mail_Exp.'>'."\n"; 
     
//Mail reponse     
   //$headers .= 'Return-Path: <'.$email_reply.'>'."\n";  
     $headers .= 'MIME-Version: 1.0'."\n";
     $headers .= 'Content-Type: multipart/mixed; boundary="'.$frontiere.'"';
 
//MESSAGE TEXTE
    $message = 'This is a multi-part message in MIME format.'."\n\n";
//-----------------------------------------------\\
    $message .= '--'.$frontiere."\n";
    $message .= 'Content-Type: text/plain; charset="iso-8859-1"'."\n";
    $message .= 'Content-Transfer-Encoding: 8bit'."\n\n";
    $message .= $message_texte."\n\n";
 
  
//MESSAGE HTML
     $message .= '--'.$frontiere."\n";
     $message .= 'Content-Type: text/html; charset="iso-8859-1"'."\n";
     $message .= 'Content-Transfer-Encoding: 8bit'."\n\n";
     $message .= $message_html."\n\n";
//-----------------------------------------------\\
     $message .= '--'.$frontiere.'--'."\n";
 
//PIECE JOINTE
     $message .= 'Content-Type: image/jpeg; name="aff1.jpg"'."\n";
     $message .= 'Content-Transfer-Encoding: base64'."\n";
     $message .= 'Content-Disposition:attachement; filename="aff1.jpg"'."\n\n";
     $message .= chunk_split(base64_encode(file_get_contents('aff1.jpg')))."\n";
 
     if(mail($destinataire,$sujet,$message,$headers))
              {echo $destinataire." OK 
";}
                     else
              {echo $destinataire." NG 
";}
 
}
?>
 
 
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans titre</title>
</head>
 


</html>

4 réponses

JulSoft Messages postés 354 Date d'inscription dimanche 3 juin 2001 Statut Membre Dernière intervention 11 mars 2013
14 oct. 2010 à 23:27
Jamais testé l'envoi de mails avec pieces jointes... Tu peux jetter un oeil du côté de phpmailer, une lib qui permet d'envoyer des mails de façon un peu plus complette que par la fonction native de php...
3
JulSoft Messages postés 354 Date d'inscription dimanche 3 juin 2001 Statut Membre Dernière intervention 11 mars 2013
15 oct. 2010 à 21:00
Hello,

Il y'a quelques années (donc mes souvenirs sont peut être faux, mais je crois pas), on avait mis en place une newsletter en faisant comme ça (avec phpmailer donc). Ca avait l'avantage qu'on pouvait intégrer un lien de desinscription dans le mail.

L'inconvénient est qu'il fallait pas loin de 1/2h pour envoyer les mails, du coup il faut un serveur configurer pour que les scripts puissent s'exécuter pendant longtemps...

Il faut aussi faire en sorte que la personne qui envoie la newsletter ne puisse pas la réenvoyer en croyant qu'il y'a un bug vu que la page ne charge pas (ça nous était arrivé...).
3
cs_fredhot Messages postés 5 Date d'inscription mardi 16 décembre 2008 Statut Membre Dernière intervention 20 mai 2014
15 oct. 2010 à 07:00
merci pour ta réponse.
hier soir j'ai effectivement trouvé phpmailer & swiftmailer.
Effectivement des classes très pratique.
je me suis penché sur swiftmailer.

plus de prise de tête avec les frontières, moins de code.

par contre si quelqu'un connait un tuto ou des exemples sur ces classes je suis preneur.
Je me sers du site de l'editeur mais je pense que je n'exploite pas toutes les possibilités.
je cherche à faire une newsletter.
Pour envoyer à chaque contact je prend mes contacts dans ma BDD et je fais une boucle avec while.
Est-ce la bonne solution?

@plus
0
cs_fredhot Messages postés 5 Date d'inscription mardi 16 décembre 2008 Statut Membre Dernière intervention 20 mai 2014
16 oct. 2010 à 12:35
salut et merci JulSoft pour tes précisions.
j'ai choisi swiftmailer pour l'envoi, j'ai quelques soucis avec l'envoi en CopieCaché.
je préfère clôturer ce Post pour en ouvrir un autre sur ce sujet.

Merci. - @plus
0
Rejoignez-nous