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 d'un mail


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 59
    Points : 26
    Points
    26
    Par défaut Envoi d'un mail
    Voila j'ai creer une page qui est sence envoiyer un mail mais voila il me met envoi reussi mais aucun message n'arrive.Voici mon code:
    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
    $headers = 'From: fbi@fbi-distribution.com \n';
    $requete="SELECT t_clt.k_clt, nom, prenom, mail, k_commande, t_commandes.paie_des_c_fr
    FROM t_commandes, t_clt
    WHERE t_clt.k_clt = t_commandes.k_clt
    AND etat = 'nouvelle'
    AND STATUS = 'finalisee'"; 
    $result= mysql_query($requete); 
    if(!$result)
    {
      echo "Lecture impossible"; 
    }
    else
    {
        $nbcol=mysql_num_fields($result); 
        $nbemail=mysql_num_rows($result); 
        echo "<h3> Tous nos e-mail enregistres</h3>";
        echo "<h4> Il y a $nbemail nouvelles commandes enregistre </h4>";
        echo "<table border=\"1\"><tbody>";
        echo "<tr><th>No client</th> <th>Nom</th> <th>Prenom</th> <th>Mail</th><th>No commande</th><th>Moyen de paiement</th></tr>";
        while($ligne=mysql_fetch_array($result,MYSQL_NUM)) 
        {
        echo "<tr>";
        foreach($ligne as $valeur) 
        {
          echo "<td> $valeur </td>";
        }
            echo "</tr>";
        }
        echo "</tbody></table>";
    }
    mysql_free_result($result);
     
    $dest = "";
    $requete2="select mail from t_commandes, t_clt where t_clt.k_clt = t_commandes.k_clt and etat='nouvelle' and status='finalisee'";
     
    $exe =  mysql_query($requete2);
        while($dest=mysql_fetch_array($exe,MYSQL_NUM)) 
        {
        echo "<tr>";
        foreach($dest as $mail) 
        {
          echo "<td> $mail <br></td>";
        }
            echo "</tr>";
        }
        echo "</tbody></table>";
     
     
     
    	if(mail("$mail","Test mail", "$text", "$headers"))
    	{
    		echo "Envoi reussi";
    	}
    	else
    	{
    		echo "Echec envoi a $mail";
    	}
     
    ?>

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 134
    Points : 71
    Points
    71
    Par défaut
    $mail, $text, et $headers ne doivent pas être entre guillemets (dans ta boucle if).
    J'ai pas trop lu le reste du code, mais c'est ce qui m'a frappé dès le début.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 59
    Points : 26
    Points
    26
    Par défaut
    J'ai essaye d'envoyer un message avce juste la boucle if et cela fonctionne donc ce n'est pas les guillemets.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 59
    Points : 26
    Points
    26
    Par défaut
    Merci j'avai enlever au mauvais endroit c'etait bien les guillemets qui deconnait ca fonctionne maintenant.Mais j'aimerai juste savoir pourquoi il n'envoie qu'un seul mail sur 3.Si tu connais la boucle a faire .Merci

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 134
    Points : 71
    Points
    71
    Par défaut
    Citation Envoyé par lemessindu57 Voir le message
    Merci j'avai enlever au mauvais endroit c'etait bien les guillemets qui deconnait ca fonctionne maintenant.Mais j'aimerai juste savoir pourquoi il n'envoie qu'un seul mail sur 3.Si tu connais la boucle a faire .Merci

    Ce petit bout de code paraît étrange :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     while($dest=mysql_fetch_array($exe,MYSQL_NUM)) 
        {
        echo "<tr>";
        foreach($dest as $mail) 
        {
          echo "<td> $mail <br></td>";
        }
            echo "</tr>";
        }
    En gros ça signifie que "tant qu'il y a des résultats, on affiche le destinataire"
    Jusque là pas de problème (si tu parles de "3" c'est que ça doit t'en afficher 3 à l'écran). Mais il faut que tu insères ces 3 destinataires dans une variable, sinon $mail ne contient que le dernier destinataire, voilà pourquoi ça n'envoi qu'un mail.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 59
    Points : 26
    Points
    26
    Par défaut
    je suis debutant tu peux un peu un developper stp.Car oui j'ai bien les 3 adresses a qui je doit envoyer le mail qui s'affiche mais je vois pas comment inserer les 3 adresses dans $mail.Merci

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 134
    Points : 71
    Points
    71
    Par défaut
    Alors ce que tu peux faire c'est mettre à chaque tour de boucle les destinataires dans un tableau.
    Regarde :
    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
     
    $i=0;  // on prépare un compteur
     
    while($dest=mysql_fetch_array($exe,MYSQL_NUM))
        {  // tant qu'il y a des résultats
        echo "<tr>";
        foreach($dest as $mail) 
        {
          echo "<td> $mail <br></td>";
     
        }
          $destinataires[$i]=$mail;
          $i++;
            echo "</tr>";
        }
    A partir de ce moment, ton tableau $destinataires contient tous les destinataires de ta requête. Il faut donc faire une boucle et envoyer ton mail pour chaque destinataire du tableau.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $i=0;  // on repasse $i à 0 pour parcourir $destinataires
    foreach($destinataires as $cle=>$dest){
        if(mail($dest[$i],"Test mail", $text, $headers)){
                 echo "Envoi reussi";
    	    }
        else{
    	echo "Echec envoi a $mail";
        }
    $i++;
    }
    Donc là tu devrais avoir 3 tours de boucles, donc 3 mails, donc 3 affichages "Envoi reussi" à l'écran

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 59
    Points : 26
    Points
    26
    Par défaut
    C bizarre il me met que 1 seul envoi reussi et je ne recoit meme plus 1 mail.J'ai regarde ton code et ca me parait juste.T'a pas une idee de ou ca cloche?
    Merci

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 134
    Points : 71
    Points
    71
    Par défaut
    Citation Envoyé par lemessindu57 Voir le message
    C bizarre il me met que 1 seul envoi reussi et je ne recoit meme plus 1 mail.J'ai regarde ton code et ca me parait juste.T'a pas une idee de ou ca cloche?
    Merci
    J'ai modifié mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $destinataires[$i]=$mail;
    $i++;
    J'ai mis ça dans la boucle while, et non pas dans la foreach

    Mais bon bizarre que ça ne fonctionne pas.. Il y a bien les 3 destinataires dans $destinataires ?
    Pour le vérifier tu fais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    foreach ($destinataires as $cle=>$valeur){
        echo 'num : '.$cle.' dest : '.$valeur.'<br/>';
    }

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 59
    Points : 26
    Points
    26
    Par défaut
    tu peux juste me montrer precisement ou integrer ton nouveau code
    Merci

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 134
    Points : 71
    Points
    71
    Par défaut
    Citation Envoyé par lemessindu57 Voir le message
    tu peux juste me montrer precisement ou integrer ton nouveau code
    Merci
    Tu parles de celui-ci ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    foreach ($destinataires as $cle=>$valeur){
        echo 'num : '.$cle.' dest : '.$valeur.'<br/>';
    }
    Si oui ben tu le mets où tu veux dans ta page, juste avant ta boucle "if" si tu veux.
    Si par contre tu parles du code que j'ai changé de place dans la boucle, alors celui-là je l'ai édité dans mon message précédent

    Par contre montre-moi ton code que tu as maintenant, histoire que je vois où ça peut planter.

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 59
    Points : 26
    Points
    26
    Par défaut
    Voila mon code actuel
    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
    $headers = "MIME-Version: 1.0"; 
    $headers .= "Content-Type:text/html;charset=iso-8859-1\n"; 
    $headers .= "Content-Transfer-Encoding: 8bit\n"; 
    $headers .= "From: fbi@fbi-distribution.com \n";
    $requete="SELECT t_clt.k_clt, nom, prenom, mail, k_commande, t_commandes.paie_des_c_fr
    FROM t_commandes, t_clt
    WHERE t_clt.k_clt = t_commandes.k_clt
    AND etat = 'nouvelle'
    AND STATUS = 'finalisee'"; 
    $result= mysql_query($requete); 
    if(!$result)
    {
      echo "Lecture impossible"; 
    }
    else
    {
        $nbcol=mysql_num_fields($result); 
        $nbemail=mysql_num_rows($result); 
        echo "<h3> Tous nos e-mail enregistres</h3>";
        echo "<h4> Il y a $nbemail nouvelles commandes enregistre </h4>";
        echo "<table border=\"1\"><tbody>";
        echo "<tr><th>No client</th> <th>Nom</th> <th>Prenom</th> <th>Mail</th><th>No commande</th><th>Moyen de paiement</th></tr>";
        while($ligne=mysql_fetch_array($result,MYSQL_NUM)) 
        {
        echo "<tr>";
        foreach($ligne as $valeur) 
        {
          echo "<td> $valeur </td>";
        }
            echo "</tr>";
        }
        echo "</tbody></table>";
    }
    mysql_free_result($result);
     
    $dest = "";
    $requete2="select mail from t_commandes, t_clt where t_clt.k_clt = t_commandes.k_clt and etat='nouvelle' and status='finalisee'";
     
    $exe =  mysql_query($requete2);
    $i=0;
        while($dest=mysql_fetch_array($exe,MYSQL_NUM)) 
        {
        echo "<tr>";
        foreach($dest as $mail) 
        {
          echo "<td> $mail <br></td>";
          $destinataires[$i]=$mail;
        }
            echo "</tr>";
        }
        echo "</tbody></table>";
     
     
    foreach ($destinataires as $cle=>$valeur){
        echo 'num : '.$cle.' dest : '.$valeur.'<br/>';
    }
     
    $i=0;  // on repasse $i à 0 pour parcourir $destinataires
    foreach($destinataires as $cle=>$dest){
        if(mail($dest[$i],"Test mail", $text, $headers)){
                 echo "Envoi reussi";
    	    }
        else{
    	echo "Echec envoi a $mail";
        }
    }
     
    ?>

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 59
    Points : 26
    Points
    26
    Par défaut
    C bon j'ai change de place dans la boucle et ca fonctionne.Merci beaucoup

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 59
    Points : 26
    Points
    26
    Par défaut
    Attend ca m'ecrit reussi 3 fois mais je recoit pas les mails.

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 134
    Points : 71
    Points
    71
    Par défaut
    Citation Envoyé par lemessindu57 Voir le message
    Attend ca m'ecrit reussi 3 fois mais je recoit pas les mails.
    Tu as oublié les "$i++"... Regardes bien le code que je t'ai donné.
    Tu dois avoir très exactement ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $i=0;
        while($dest=mysql_fetch_array($exe,MYSQL_NUM)){
        echo "<tr>";
        foreach($dest as $mail){
          echo "<td> $mail <br></td>";
     
        }
            $destinataires[$i]=$mail;
            $i++;
            echo "</tr>";
        }
    puis ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $i=0;  // on repasse $i à 0 pour parcourir $destinataires
    foreach($destinataires as $cle=>$dest){
        if(mail($dest[$i],"Test mail", $text, $headers)){
                 echo "Envoi reussi";
        }else{
    	echo "Echec envoi a $mail";
        }
    $i++;
    }

  16. #16
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 59
    Points : 26
    Points
    26
    Par défaut
    J'ai rajoute le $i++ en bas mais en fait il envoie tout les mails a la derniere personne de la liste.

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 134
    Points : 71
    Points
    71
    Par défaut
    Citation Envoyé par lemessindu57 Voir le message
    J'ai rajoute le $i++ en bas mais en fait il envoie tout les mails a la derniere personne de la liste.
    Là l'erreur vient de moi... je viens de remarquer que j'ai fait une bourde

    Teste ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    $i=0;
        while($dest=mysql_fetch_array($exe,MYSQL_NUM)){
        echo "<tr>";
        foreach($dest as $mail){
          echo "<td> $mail <br></td>";
     
        }
            $destinataires[$i]=$dest;
            $i++;
            echo "</tr>";
        }
    En gros j'ai remplacé $mail par $dest (normal, $mail ne peut pas marcher étant donné que je ne suis plus dans la boucle foreach ).
    Malheureusement j'ai du mal à cerner la fonction mysql_fetch_array(); Je travaille plutôt sous Oracle, donc je n'utilise pas la même fonction (la mienne me renvoie une ligne, je suppose que c'est pareil ici.. enfin bref).

  18. #18
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 59
    Points : 26
    Points
    26
    Par défaut
    Desole il continue d'envoyer tout au dernier.Et maintenant le foreach que tu m'avait donner pour verifier les adresses ne fonctionne plus

  19. #19
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 134
    Points : 71
    Points
    71
    Par défaut
    mysql_fetch_array() retourne une ligne de résultats (donc comme la fonction que j'utilise sous Oracle).
    Donc je ne comprend pas pourquoi ceci ne fonctionne pas... :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    foreach($dest as $mail){
          echo "<td> $mail <br></td>";
           $destinataires[$i]=$mail;
           $i++;
         }
    Car cela signifie que si ça envoie les 3 mails à la dernière personne, c'est que $destinataires[0] = "dernier_destinataire"
    $destinataires[1] = "dernier_destinataire"
    $destinataires[2] = "dernier_destinataire"

    Donc c'est que la requête ne retourne qu'une ligne avec 3 valeurs dedans. Donc le code que je viens de t'indiquer au-dessus devrait fonctionner

    Là je t'avouerai que je suis paumé..

  20. #20
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 59
    Points : 26
    Points
    26
    Par défaut
    bon la j'ai fini ma journee de stage donc je vais chercher chez moi ce soir et j'ecrirai demain si j'ai trouve la panne.Merci de ton aide

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. L'envois de mail ne m'envois pas de mail ...
    Par PrinceMaster77 dans le forum ASP
    Réponses: 10
    Dernier message: 27/10/2004, 16h28
  2. Envois d'un mail Avec CDont
    Par PrinceMaster77 dans le forum ASP
    Réponses: 3
    Dernier message: 25/10/2004, 17h34
  3. [TIdSMTP] Envoi d'un mail avec authentification ?
    Par BACUS dans le forum C++Builder
    Réponses: 4
    Dernier message: 16/06/2004, 16h18
  4. Envoi d'un mail automatiquement
    Par batmat86 dans le forum C++Builder
    Réponses: 10
    Dernier message: 16/06/2004, 09h20
  5. Envoi d'un mail en VBA: outlook ne se lance pas
    Par Hannibal dans le forum VBA Access
    Réponses: 4
    Dernier message: 01/06/2003, 15h24

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