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 e-mail automatiquement à une date precise


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 298
    Points : 101
    Points
    101
    Par défaut Envoi e-mail automatiquement à une date precise
    bonjour bon je me suis bloqué sur l'envoi d'email automatiquement quand la date actuel arrive a date d'expiration
    bon voila ce qui j'ai pu faire mais j'avoue que ca marche pas et je recois aucun email
    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
     
    include"connexion.php";
    $sql="select dureecde_archcde from archive cde";   // selection de tous les date expiration//
    $date_expiration=mysql_query($sql);
     
    $sql1="select email_archcde from archive cde"; // selection de tous les emails
    $email=mysql_query($sql1);
     
     
    $from='soopranoo@hotmail.fr';
    $to='$email';
    $sujet='Envoi d\'un mail avec MySendMail';
    $message='Ceci est simple exemple Merci';
    $date=date('y/m/d');
     
    if($date== $date_expiration)
    {
     $res=MySendMail('',from,$to,$sujet,$message);
    if($res) echo 'Envoi du mail effectué.';
    else echo 'Echec durant l\'envoi du mail.';
    }
    j'en s pas c'est ce que j'ai fais est juste ou j'ai vraiment besoin d'1 boucle

    please aidez moi

  2. #2
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Bonjour,


    Oui en effet si ta base contient plusieurs archives il faut boucler.

    Aussi, mysql_query renvoie une requête SQL, et non son jeu de résultat.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $date_expiration=mysql_result(mysql_query($sql),0,'dureecde_archcde');
    Il manque un $ devant "from".

    Pourquoi faire (qui ne fonctionnera pas d'ailleurs) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $to='$email'; // echo $to affiche $email.
    $res=MySendMail('',$from,$to,$sujet,$message);
    et pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $res=MySendMail('',$from,$email,$sujet,$message);
    Pour finir, quel est le script qui est chargé d'appeler au bon moment ton script d'envoi de l'email ?

  3. #3
    Membre confirmé
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    397
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 397
    Points : 518
    Points
    518
    Par défaut
    Salut,

    tes requêtes non pas l'air super fraîches.
    Si tu travailles sur la même table tu peux regrouper en une seule requête
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql="select dureecde_archcde, email_archcde from archive cde";

    qu'est ce que cde ? on pourrait penser à un alias mais cela n'a pas l'air d'être le cas.

    Tester une égalité sur la date me semble, dans certaine condition, pas la meilleur solution... Il serait peut être préférable de vérifier si la date du jour n'ait pas égale ou plus élevé que la date d'expiration.
    Zend PHP5 Certification
    MySQL 4 Core Certification

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 298
    Points : 101
    Points
    101
    Par défaut ok
    Pour finir, quel est le script qui est chargé d'appeler au bon moment ton script d'envoi de l'email ?
    bah j'ai fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if($date>= $date_expiration)
    {
     $res=MySendMail('',$from,$email,$sujet,$message);
    if($res) echo 'Envoi du mail effectué.';
    else echo 'Echec durant l\'envoi du mail.';
    }
    j crois que j'ai besoin d'1 boucle parceque vraiment sa marche pas en plus
    il me sorte deboguage quand j'execute de page php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    Warning: mysql_result(): supplied argument is not a valid MySQL result resource in c:\documents and settings\mehdi\bureau\gestion pack essai\html\ecriture_cde.php on line 92
     
    Warning: mysql_result(): supplied argument is not a valid MySQL result resource in c:\documents and settings\mehdi\bureau\gestion pack essai\html\ecriture_cde.php on line 93
     
    Fatal error: Call to undefined function: mysendmail() in c:\documents and settings\mehdi\bureau\gestion pack essai\html\ecriture_cde.php on line 103

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 298
    Points : 101
    Points
    101
    Par défaut oui
    Citation Envoyé par Gats Voir le message
    Salut,

    tes requêtes non pas l'air super fraîches.
    Si tu travailles sur la même table tu peux regrouper en une seule requête
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql="select dureecde_archcde, email_archcde from archive cde";

    qu'est ce que cde ? on pourrait penser à un alias mais cela n'a pas l'air d'être le cas.

    Tester une égalité sur la date me semble, dans certaine condition, pas la meilleur solution... Il serait peut être préférable de vérifier si la date du jour n'ait pas égale ou plus élevé que la date d'expiration.
    oui j'ai changer mon code par :
    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
     
    include"connexion.php";
    $sql="select dureecde_archcde, email_archcde from archivecde";
    $date_expiration=mysql_result(mysql_query($sql) or die("erreur en sql". mysql_error()),0, 'dureecde_archcde');
    $email=mysql_result(mysql_query($sql) or die("erreur en sql". mysql_error()),0, 'email_archcde');
     
    $from='soopranoo@hotmail.fr';
     
    $sujet='Envoi d\'un mail avec MySendMail';
    $message='Ceci est simple exemple Merci';
    $date=date('y/m/d');
     
    if($date>= $date_expiration)
    {
     $res=MySendMail('',$from,$email,$sujet,$message);
    if($res) echo 'Envoi du mail effectué.';
    else echo 'Echec durant l\'envoi du mail.';
    }
    que pense tu de mon code ?
    le probleme c'est qui marche pas du tout
    vraiment j'ai besoin d'aide

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 302
    Points : 141
    Points
    141
    Par défaut
    Bonjour,

    Je ne sais pas si cela pourra t'aider. J'espere ne pas dire d'aneries.

    Utilise plutot la fonction mail().

    De plus a ta place je ferait comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $date_expiration = mysql_query("SELECT dureecde_archcde FROM archive cde");
    et :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $email = mysql_query("SELECT email_archcde FROM archive cde);
    Voila j'espere t'avoir éclairé et évite de données des noms avec des espaces :
    archive cde
    Kévin

  7. #7
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Citation Envoyé par kev484 Voir le message
    Bonjour,

    Je ne sais pas si cela pourra t'aider. J'espere ne pas dire d'aneries.

    Utilise plutot la fonction mail().

    De plus a ta place je ferait comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $date_expiration = mysql_query("SELECT dureecde_archcde FROM archive cde");
    et :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $email = mysql_query("SELECT email_archcde FROM archive cde);
    Voila j'espere t'avoir éclairé et évite de données des noms avec des espaces :
    Kevin,

    Attention à éviter de donner des conseils erronés. Comme dit plus haut mysql_query renvoie une requête et non pas une chaine de caractères, ni un jeu de résultat.

    Pas la peine d'utiliser la fonction mail, sa classe fait surement le meme travail.

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 302
    Points : 141
    Points
    141
    Par défaut
    Ok pas de soucis. Merci de m'avoir corrigé. Désolé pour les aneries...
    Kévin

  9. #9
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 298
    Points : 101
    Points
    101
    Par défaut
    merci quand meme pour votre aide Kev et grand merci aussi pour vous les gas mais la j'ai besoin d'aide

    bon pour plus detaillé j'ai 3 table client(num_clt, nom_clt, email_clt...)
    pack(ref_pack, lib_pack...)
    commande(num_cde, date_cde, duree...)
    bon pour simplifier j'ai ajouter une 4 table qui s'appelle archivecde il comporte les données des ses 3 tables
    voila
    pour toucher bien le probleme
    je veux effectuer une envoi d'email dynamique et automatique d'apres la table archivecde parceque il comporte 3 champs importants (email , date cde et duree(date expiration))

    es ce que c'est possible d'en faire l'envoi automatique sans se servir d'un bouton

  10. #10
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 298
    Points : 101
    Points
    101
    Par défaut
    slt je suis de retour

    Citation Envoyé par ThomasR Voir le message
    Bonjour,
    Oui en effet si ta base contient plusieurs archives il faut boucler.
    c'est que j'ai fais j'ai utiliser mysql_fetch_array et boucle while puisque j'utilise une base
    merci ThomasR pour ton aide ainsi les autres

  11. #11
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 298
    Points : 101
    Points
    101
    Par défaut
    bon j'ai fais ce code pour l'envoi du email automatiquement a condition que la date serveur = a la date expiration
    envoi_email.php
    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
     
    <?php
    include"connexion.php";
    //* Envoi mail automatiquement //
    $date=date('y,m,d',time());  //date du serveur//
      //titre du mail
      $titre = 'Abonnement s\'ecouler';
    $sql="select * from archivecde "; //requette
    $req=mysql_query($sql) or die("erreur sql". mysql_error());
     $compteur=1; // variable pour compter les mails
     while($l=mysql_fetch_array($req)){
     $email=$l['email_archcde']; //prend email du la table
     $nom=$l['nomclt_archcde']; //Prend nom du la table
     $date_expiration=$l['dureecde_archcde']; // prend date expiration du la table
     //contenu du l'email
       $contenu = 'Bonjour! <br />Mr : '.$nom.'<br />';
      $contenu .= 'Votre Abonnement vient s ecoulé Voulez vous vraiment reabonnez ?:';
      $contenu .= 'Au revoir <br /><br />'; 
      // envoi du mail HTML
      $from = "From: hello <soopranoo@hotmail.fr>\nMime-Version:";
      $from .= " 1.0\nContent-Type: text/html; charset=ISO-8859-1\n";
     
      if($date >= $date_expiration){   // tester si la date du serveur = a date expiration
      // envoie du mail
      if(mail($email,$titre,$contenu,$from)){ 
      echo'N° '.$compteur.' - '.$email.' : envoyé avec succés!<br />';
            $compteur++; // ajoute 1 à la variale du compteur
    		}  // fin
     
    		else
    	{
    	echo'Echec d\'envoi Email :'.$email.'';
    	}
    	}
    	}
    	?>
    si j'enleve la conditon if($date>=$date_expiration) et j'execute il me donne les deboguage suivant
    Warning: mail(): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in c:\documents and settings\mehdi\bureau\gestion pack essai\html\envoi_mail.php on line 24
    Echec d'envoi Email :k_ryhme.le.roi@hotmail.com
    Warning: mail(): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in c:\documents and settings\mehdi\bureau\gestion pack essai\html\envoi_mail.php on line 24
    Echec d'envoi Email :nnauthy@hotmail.com
    Warning: mail(): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in c:\documents and settings\mehdi\bureau\gestion pack essai\html\envoi_mail.php on line 24
    Echec d'envoi Email :satan_of_death_metall@hotmail.
    Warning: mail(): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in c:\documents and settings\mehdi\bureau\gestion pack essai\html\envoi_mail.php on line 24
    Echec d'envoi Email :k_ryhme.le.roi@hotmail.com
    sinon j'obtient une feuille toute blanche

    bon comment je peut tester l'envoi d'email et comment s'avoir si l'envoi d'email va s'executer automatiquement
    aider moi sur ca svp

Discussions similaires

  1. Envoie de mail avec php dans une date precise
    Par salimtrois dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 04/04/2012, 17h50
  2. Envoie de mail automatique depuis une page ASP
    Par ravidat dans le forum ASP
    Réponses: 3
    Dernier message: 30/05/2009, 13h25
  3. [MySQL] Envoi de mails selon une heure et une date donnée stockée
    Par vw91 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 16/06/2008, 11h00
  4. [DDE]envoi de mail automatique selon le résultat d'une requête
    Par celiaaa dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 10/04/2007, 19h10
  5. Réponses: 14
    Dernier message: 17/11/2005, 17h16

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