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

Serveurs (Apache, IIS,...) Discussion :

[CRON] Envoi de mail automatique [Fait]


Sujet :

Serveurs (Apache, IIS,...)

  1. #1
    Membre régulier Avatar de a_me
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 84
    Points : 80
    Points
    80
    Par défaut [CRON] Envoi de mail automatique
    salut,
    peut-on faire un envoi automatique d'email sans avoir à lancer le site ??
    j'ai realise un site, et dans la partie administration, un email automatique doit etre envoye automatiquement à l'administrateur à chaque fois que le délai de ses clients approche à sa fin, et cela sans avoir à lancer le site, et sans que lui aie besoin à vérifier à chaque fois à partir de l'administration..

    est-ce possible??
    si oui, comment y procéder??

    merci d'avance
    --- Silence of the Bones ---

  2. #2
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449

  3. #3
    Rédactrice
    Avatar de xave
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2002
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2002
    Messages : 871
    Points : 1 094
    Points
    1 094
    Par défaut
    Tu as deux solutions pour ça, ou un script qui tourne en permanence et qui enverra le mail dès qu'il aura reçu une information ou un script qui s'exécute périodiquement et qui enverra le mail si besoin (cf tuto donné par Mr N.)

    [HS] Ravie de te revoir Mr N. [/HS]

  4. #4
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    [HS]Ouaip. Ca faisait longtemps qu'on c'était pas croisés [/HS]

  5. #5
    Membre régulier Avatar de a_me
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 84
    Points : 80
    Points
    80
    Par défaut
    voilà ca fonctionne
    j'ai eu un petit problème, j'ai cherché, et j'ai trouvé qu'il fallait installé le package WGET, maintenant cela fonctionne

    merci Mr N.
    --- Silence of the Bones ---

  6. #6
    Membre régulier Avatar de a_me
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 84
    Points : 80
    Points
    80
    Par défaut
    suite à la demande de aude_1603, je vais poster la façon dont j'ai procédé pour résoudre ce problème.

    tout d'abord, j'explique la tache voulue: envoi automatique d'email à partir d'un script php sans avoir à l'éxécuter manuellement. quelque soit la tâche ou le script que vous volez exécuter, cela n'a pas d'importance

    pour le lancer automatiquement, il faut utiliser le planificateur de tâche de unix/linux: CRON

    pour utiliser cron, lance le terminal, connecte toi en root, et tape:
    tu aura la liste des tâches qui s'exécutent périodiquement, tu ajoute la tienne sous cette forme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mm hh dd mo js commande_a_executer
    mm: les minutes
    hh: les heures
    dd: les jours du mois
    mo: les mois
    js: les jours de la semaine
    et enfin la commande à éxécuter (dans notre cas un script php)

    pour plus de détails référence toi au lien donné plus haut par les amis pour le fonctionnement du cron.

    puis tu appuie sur échap, et tu tape:
    w pour write (enregistrer les modification)
    q pour quit quiter l'éditeur du fichier.

    mais avant, il te faut pour exécuter le script php, un package à installer WGET, qui simule un navigateur. pour le télécharger tu peux le trouver ici:
    WGET 1.10.2
    tu l'installe en suivant la procédure décrite dans le package.

    maintenant, tu peux écrire la commande à executer comme suit (en supposant que mon script se trouve à http://www.monsite.com/cron/script.php)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wget http://www.monsite.com/cron/script.php
    dans ce cas, il va à chaque fois que le script est exécute, il va créer un fichier de sortie dans le document root de ton serveur, car wget agit comme un navigateur donc il doit retourner la page générée par le script, pour rémedier à cela, tu envoi le résultat à la poubelle de cette manière:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wget http://www.monsite.com/cron/script.php >> /dev/null
    à la fin, il ne te reste qu'a déterminé la fréquence d'éxécution de ce script et de l'ajouter aux taches cron.
    par exemple tu veux l'éxécuter chaque début de mois à 16h, tu tapera:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    * 16 1 * * wget http://www.monsite.com/cron/script.php >> /dev/null
    et voilà, j'espère que j'ai bien expliqué
    sinon je suis toujours à votre disposition
    --- Silence of the Bones ---

  7. #7
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    euh... les scripts appelés par cron, dans la mesure du possible, j'éviterais de les mettre accessibles sur le net. la commande php est là pour executer un script, autant s'en servir sans avoir à utiliser wget. A condition bien sur que cron et l'application web en question soient sur le meme serveur...

  8. #8
    Membre régulier Avatar de a_me
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 84
    Points : 80
    Points
    80
    Par défaut
    Citation Envoyé par Mr N.
    euh... les scripts appelés par cron, dans la mesure du possible, j'éviterais de les mettre accessibles sur le net. la commande php est là pour executer un script, autant s'en servir sans avoir à utiliser wget. A condition bien sur que cron et l'application web en question soient sur le meme serveur...
    oui tu as raison, mais c'est la solution que j'ai utilisé moi, c'était pas notre serveur, et j'avais pas totalité d'accès dessus, alors j'ai utilisé wget avec cron. de plus, le script en lui même ne fait que des test et envoi des emails
    --- Silence of the Bones ---

  9. #9
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    "que" envoyer des mails ?

    Imagine que je suis un petit malin et que je connaisse l'url de ton script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for ($i = 0 ; $i < 100000 ; $i++) {
       fopen('http://le.site.de.a_me/cron/script.php');
    }
    Et là ton serveur va se mettre à cracher 100000 mails... De quoi se faire passer pour spammeur...

  10. #10
    Membre régulier Avatar de a_me
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 84
    Points : 80
    Points
    80
    Par défaut
    oups, et comment configurer sans utiliser wget?
    si tu peux nosu éclaircir cela
    --- Silence of the Bones ---

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Trois points:

    1) Il est aussi possible de choisir un nom très difficile à deviner pour le script PHP envoyant les emails, par exemple http://www.monsite.com/g4sd43.php
    2) Il est aussi possible de mettre le script dans un repertoire protegé par .htaccess. Dans ce cas, wget peut être utilisé de la manière suivante: wget --http-user=utilisateur - -http-password=monmotdepasse http://www.monsite.com/protected/envoyer_mails.php
    3) Un script pour envoyer des mails de cette sorte bien écrit ne devrait en théorie n'envoyer que des emails si leur envoi est prévu. Par example le script devrait charger une table MySQL et envoyer seulement des emails si c'est prévu, et pour chaque email envoyé mettre a jour la table. Par exemple nous avions un client qui avait besoin d'avoir des emails envoyés 24h après la confirmation de leur achat. Dans la table "commandes", j'ai créé un champ appelé "email_suivi_envoye" qui est mis a "1" quand le mail est envoyé. De cette manière même si le script envoyant les mails différés est appelé 10000 fois, seul un email par commande est envoyé.

    Il est aussi possible de commencer un script PHP par
    #!/usr/bin/php
    et de l'appeler directement par cron (/home/site/domaine/public_html/script.php)
    Dans ce cas la le script peut etre mis dans un repertoire accessible par cron mais pas par l'exterieur (par ex. /home/site/domaine/script/php)
    Cette dernière méthode est moins fiable que les précedentes dans la mesure ou elle depend de plus de facteurs, e.g. où est l'executable PHP, etc.
    Mais cela devrait répondre au attentes des plus paranoides

    Pascal Roget
    OC Agency, Inc

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

Discussions similaires

  1. [MySQL] TACHE CRON ENVOI DE MAIL AUTOMATIQUE
    Par reunionbysat dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 28/10/2010, 00h17
  2. diff de fichier et envoi de mail automatique
    Par Maniac dans le forum Langage
    Réponses: 22
    Dernier message: 23/03/2007, 12h29
  3. [VB6]envoie de mail automatiquement
    Par riesseg dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 28/04/2006, 14h14
  4. Réponses: 14
    Dernier message: 17/11/2005, 17h16
  5. Envoi de mail automatique avec Visual C++
    Par cza dans le forum MFC
    Réponses: 2
    Dernier message: 22/02/2005, 15h59

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