IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

envoi mail avec piece jointe


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 6
    Points : 5
    Points
    5
    Par défaut envoi mail avec piece jointe
    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.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    <?php
     
    include("../Template/Connect/Connexionbd.php");
    $Css        =' body{ margin: 0;padding: 0;font-family: Georgia, "Times New Roman", Times, serif;} ';
     
    $Texte = 'Mon texte ';
     
    echo '<a href="admin/admin_menu.php">retour Menu</a><br><br>';
     
    //-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 !<br/>'.$sql.'<br/>'.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><body>'.utf8_decode($Texte).'</body></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 <br/>";}
                         else
                  {echo $destinataire." NG <br/>";}
     
    }
    ?>
     
     
     
    <!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>
     
    <body>
    </body>
    </html>

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 6
    Points : 5
    Points
    5
    Par défaut encore moi...
    bon... j'ai trouvé plus ou moin.
    ça fonctionne avec la messagerie de Free(zimbra) mais pas sur yahoo ni sur Gmail...sur ces 2 là j'ai un truc comme

    << -------=b1bcce995c14af18f55809aa1cb0243a Content-Type: image/jpeg; name="aff1.jpg" Content-Transfer-Encoding: base64 Content-Disposition: attachement; filename="aff1.jpg" /9j/4AAQSkZJRgABAQEAZABkAAD/2wBDAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIf IiEmKzcvJik0KSEiMEExNDk7Pj4+JS5ESUM8SDc9Pjv/2wBDAQoLCw4NDhwQEBw7KCIoOzs7Ozs7 ........>> à la place de la photo.
    Pourquoi ça fonctionne pas sur ceux là????



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    <?php
    include("../Template/Connect/Connexionbd.php");
     
    echo '<a href="admin/admin_menu.php">retour Menu</a><br><br>';
     
    $img_dep="aurachrome/aff1.jpg";
     
    $Css        ='
                      body{ margin: 0;padding: 0;font-family: Georgia, "Times New Roman", Times, serif;} ';
     
     
    $Texte2 = 'Voici mon texte    ';
     
    //sujet
        $titre      = 'NewsLetter - ';
        $sujet      = utf8_decode( $titre.'la compagnie');
     
     
     
    // 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 !<br/>'.$sql.'<br/>'.mysql_error());
     
     
    $boundary = "-----=".md5(uniqid(rand())); 
     
    $headers  = 'From: '.$Nom_Exp.'  <'.$Mail_Exp.'>'."\n";  
    $headers .= "MIME-Version: 1.0\n"; 
    $headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"";
    $headers.="\n"; 
     
    $contenu_mail = "--" . $boundary . "\n"; 
     
    $contenu_mail .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n"; 
    $contenu_mail .= "Content-Transfer-Encoding: 8bit\n\n"; 
    $contenu_mail .= "Test texte \n\n"; 
     
    $contenu_mail .= "--" . $boundary . "\n"; 
     
    $contenu_mail .= 'Content-Type: text/html; charset="iso-8859-1"'."\n"; 
    $contenu_mail .= 'Content-Transfer-Encoding: 8bit'."\n\n"; 
    $contenu_mail .= '<html><head><title>Test</title><style type="text/css" media="screen">'.$Css.'</style></head><body>'.utf8_decode($Texte2).'</body></html>'."\n\n"; 
     
    $contenu1 .= "--" . $boundary . "\n";
     
    $contenu1 .= 'Content-Type: text/html; charset="iso-8859-1"'."\n"; 
    $contenu1 .= 'Content-Transfer-Encoding: 8bit'."\n\n"; 
    $contenu1 .= '<html><head><title>Test</title><style type="text/css" media="screen">'.$Css.'</style></head><body>'.utf8_decode($Texte1).'</body></html>'."\n\n"; 
     
    $contenu_img .= "--" . $boundary . "\n";
     
    // -- LECTURE DU FICHIER IMAGE + CONVERSION CONTENUE --
    $open=fopen($img_dep,'r'); // "b" 
    $img=fread($open,filesize($img_dep));
    $img=chunk_split(base64_encode($img));
    fclose($open);
    $nom_img=basename($img_dep);
     
     
     
    $contenu_img .= "Content-Type: image/jpeg; name=\"$nom_img\"\n"; 
    $contenu_img .= "Content-Transfer-Encoding: base64\n"; 
    $contenu_img .= "Content-Disposition: attachement; filename=\"$nom_img\"\n\n"; //INLINE
      //$contenu_img .= chunk_split(base64_encode(file_get_contents('$nom_img')))."\n"; // encodage du pdf 
    $contenu_img .= "\n\n"; 
    $contenu_img .=$img."\n";
    $contenu_img .="\n\n";
    //$contenu_img .= "--" . $boundary . "--\n"; 
     
     while($Dest=mysql_fetch_assoc($req))
     
    {
    // destinataire     
          $destinataire = $Dest["Mail_Dest"]; 
    if (mail( $destinataire,$sujet,$contenu_mail.$contenu_img,$headers)) 
     
     {echo $destinataire." OK <br/>";}
                         else
                  {echo $destinataire." NG <br/>";}
    }
    ?>

  3. #3
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    Salut et Bienvenu sur ce forum,

    Tu peux trouver la solution à ton problème dans le topic suivant http://www.developpez.net/forums/d98...iece-attachee/ .

    A+

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    bonjour,
    merci pour ta réponse.
    j'ai aussi trouvé ce post qui ma bien aidé.
    Après d'autre recherche sur le Net j'ai trouvé des classes Php qui sont aussi intéressantes : phpmailer & swiftmailer.
    je me suis penché sur swiftmailer.
    Il permet d'avoir moins de codes donc plus clair et plus facile à développer.
    Pour utiliser ces classes je me sert du site de l'éditeur : http://swiftmailer.org/ .
    Si quelqu'un connait des tutos ou des exemples je suis preneur.

    Mon projet est de créer des newsLetters.
    pour envoyé les news , je me sers de While pour boucler sur chaques contacts(environ 5000/mois) et de la fonction Mail().
    Dans les classes de swiftMailer j'ai vu que je pouvait aussi utiliser smtp
    je suis novice dans ce domaine.

    Est-ce la bonne solution? et quel est la différence entre fonction mail & smtp

    merci

  5. #5
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    mail c'est le mot que les gens qui ne font pas d'informatique utilisent pour désigner les courriers électroniques.

    la fonction send() ou sendmail() c'est une procédure que tu peux appeler dans un code.

    smtp c'est un acronyme. C'est a dire la concaténation des premieres lettres d'autres mots. SMTP c'est Simple Mail Transfert Protocol. C'est documenté partout sur internet vu que c'est une chose abstraite qui explique comment les ordinateurs doivent s'échanger les mails dans le détail.

  6. #6
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    Salut,

    Oui c'est une bonne solution, nous avons un article sur PHP Mailer : Envoyer des e-mails simplement en PHP grâce à PHP Mailer.


    Dans ton contexte, mail est une fonction native à PHP qui permet d'envoyer des e-mails tandis que SMTP c'est un protocole qui spécifie les moyens (son transport sur le réseau par exemple au niveau réseau ) et la manière dont doivent se présenter les e-mails.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    salut et merci Thes32,gene69 pour vos réponses.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [E-03]Sauvegarde+Envoi mail avec piece jointe
    Par lafafmentvotre dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 21/10/2008, 19h16
  2. envoi mail avec piece jointes
    Par yousron dans le forum Access
    Réponses: 3
    Dernier message: 27/12/2006, 11h29
  3. probleme d'envoi de mail avec pieces jointes
    Par tmryuga dans le forum ASP
    Réponses: 9
    Dernier message: 23/02/2006, 14h56
  4. Réponses: 5
    Dernier message: 12/12/2005, 08h52
  5. envoi mail avec piece jointe fichier excel
    Par flogreg dans le forum ASP
    Réponses: 12
    Dernier message: 20/12/2004, 16h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo