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

Zend Framework PHP Discussion :

créer et lancer un batch d'envoi de mail avec Zend


Sujet :

Zend Framework PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 84
    Par défaut créer et lancer un batch d'envoi de mail avec Zend
    Bonjour.
    je suis désolée si le sujet n'est pas au bon endroit.

    je travaille sur une application et je dois envoyer un mail tous les soirs à une certaine heure. J'ai fait la fonction d'envoi de mail avec Zend_Mail qui envoie dès qu'il y a un changement. Mais ce que je veux faire, c'est garder tous les changements en mémoire, et envoyer en une seule fois, à la fin de la journée.
    Je débute avec zend, et je n'ai jamais fait de script batch, d'où mes interrogations:
    1- le script va-t-il contenir le code d'envoi de mail zend que j'ai déjà fait?
    2- à quel niveau de l'architecture doit se situer le fichier?
    3- comment lancer le fichier: depuis la vue zend ?

  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 : 38
    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
    Par défaut
    1- le script va-t-il contenir le code d'envoi de mail zend que j'ai déjà fait?
    Non, le batch ne va pas qu'aller appeler l'URL correspondant à l'endroit où est hébergé ton script à certains intervals de temps (via un cron).
    2- à quel niveau de l'architecture doit se situer le fichier?
    Où tu veux.
    3- comment lancer le fichier: depuis la vue zend ?
    Via le batch, qui est lui même lancé par le cron.

    En gros tu auras sur ton serveur un script qui va aller exécuter le batch à une heure précise, dans ce batch tu executes ton script php via la commande php.

  3. #3
    Membre émérite

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 411
    Par défaut
    1- Le mieux est de ne pas passer par une URL
    2- 3- ni être placé dans le directory web (habituallement httpdoc, www, etc...) mais dans un dossier parent et autre, néanmoins géré par PHP (et Apache)
    De cette manière, personne ne pourra lancer le script à moins d'avoir la main sur PHP dans le serveur.

    1- Le script doit pouvoir être exécutable en mode CLI (avec tout ce qui va avec (gestion des arguments passés s'il y en a, gestion des includes des classes, etc.)

    3- Donc, surtout pas dans une vue, joignable par URL. Le CRON devrait être lancé depuis le serveur et par le serveur uniquement.

  4. #4
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 84
    Par défaut
    Bonjour,
    merci pour vos explications.
    D'après ce que vous m'avez dit, voilà comment je prévois de procéder:
    placer le script et le batch dans le répertoire bin
    le fichier php qui va envoyer les mails sera placé dans controllers

    Je vais faire cela, et je vous tiendrai au courant.

    Bon début de semaine à tous!

  5. #5
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 84
    Par défaut
    rebonjour,

    j'ai fait mon batch et le fichier php. j'essaie de tester en double-cliquant sur le batch, mais toujours pas de mail reçu.

    mail.bat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    @echo off
    set APPLICATION_ENV=ptdevelopment
    set APPLICATION_MODULE=batch
    set TRACES=c:\temp
    set p0="%~dp0..\contexts\batch.php"
    set p1="00"
    set p2="01"
    set p3="Business_EnvoiMails"
    set p4="mailer"
    set p5="OK"
    php %p0% %p1% %p2% %p3% %p4% %p5%


    Et le fichier EnvoiMails.php, qui se trouve dans models (non pas dans controllers):
    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
     
    <?php
     
        class EnvoiMails
        {
                public function __construct()
                {
     
                }
     
     
                public function mailer()
                {
                    $fonction = new Business_NPD();
     
                    $result = $fonction->getMailsNotificationsJour();
     
                    //définition du serveur SMTP qui sera utilisé
                    $mailTransport = new Zend_Mail_Transport_Smtp(****);
                    Zend_Mail::setDefaultTransport($mailTransport);
     
                    $mail = new Zend_Mail();
                    $mail->setType(Zend_Mime::MULTIPART_RELATED);
                    $mail->setFrom('', '');
     
                   foreach ($result as $r)
                   {
                       $message = "Test d'envoi de mails par scripts automatiques";
     
                        $message = iconv("UTF-8", "ISO-8859-1//TRANSLIT", $message);
                        $mail->setBodyHtml($message);
                        $mail->addTo($r['adresse'], ''); 
                        $mail->send();
                   }
     
                }
        }
     
    ?>
    Je ne sais pas d'où vient l'erreur, ça fait 1h que je me creuse la tête.

  6. #6
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 84
    Par défaut
    Bonjour,

    personne.

    Il m'affiche l'erreur suivante:

    Zend_Mail_Protocol_Exception: aucune connexion n'a été établie car l'ordinateur cible l'a expressément refusée.

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

Discussions similaires

  1. Envoi de mail avec java ou batch
    Par kavdo34 dans le forum Débuter avec Java
    Réponses: 9
    Dernier message: 01/04/2010, 15h07
  2. [Mail] Probleme pour l'envoi de mails avec mime
    Par tof91 dans le forum Langage
    Réponses: 1
    Dernier message: 09/03/2006, 16h44
  3. Envoi de mail avec Lotus Notes depuis VB
    Par mdriesbach dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 09/11/2005, 15h29
  4. envoi de mail avec sql server
    Par the_new dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 17/03/2005, 18h56
  5. envoi de mail avec attachement de fichier
    Par GMI3 dans le forum Modules
    Réponses: 2
    Dernier message: 24/09/2003, 11h22

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