Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 28-06-2011 11:11:59

mina13
Membre
Date d'inscription: 09-06-2011
Messages: 13

Envoi mail avec cron

Bonjour à tous,
je vous explique ma problématique: j'essaye d'envoyer des mail automatique avec deux taches précises ( envoyer sondage et relance sondage).
J'ai crée un contrôleur Cron ou je traite ces deux fonctions. Et mon soucis et comment faire pour envoyer le sondages à une liste de personne par mail.
Merci d'avance.

Hors ligne

 

#2 29-06-2011 08:50:29

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: Envoi mail avec cron

pour tous les crons dépendant d'une appli ZF

je fais un contrôleur et je fixe les règles de sécurité appropriées
chaque tâche que doit faire un cron est une action du controlleur ainsi j'ai une url de cette action et je bénéficie de toutes les fonctionnalités de ZF envois de mail accès LDAP accès à la base modules de traitement métier etc.

le cron lui-même ne fais qu'un appel à l'url http_get http://localhost:6863/background/cron/send_survey/

A+JYT

Hors ligne

 

#3 29-06-2011 09:15:50

mina13
Membre
Date d'inscription: 09-06-2011
Messages: 13

Re: Envoi mail avec cron

Merci pour les informations. Je vais essayer de les suivre et je vous tiendrai au courant.
Merci encore

Hors ligne

 

#4 29-06-2011 09:47:53

mina13
Membre
Date d'inscription: 09-06-2011
Messages: 13

Re: Envoi mail avec cron

Voici mon contrôleur cron avec les actions qu'il doit effectuer, mais je ne sais toujours pas comment appeler les fonctions de ZF mail. sad 
Dois-je utilisés les fonctionnalité d'envoi mail sur chaque action dans le controleur cron ou plutot dans la view de chaque action?
Voici mon controleur:

<?php
class CronController extends App_Controller_Sondage {

    public function init() {
        /* Initialize action controller here */
    }

    public function indexAction() {
        // action body
    }

    /*
     * Fonction appelée par le cron pour l'envoie de sondage
     */
    public function envoiesondageAction() {
        $sondages=$this->lecture->getAllSondages();
        foreach ($sondages as $sondage)
        {
            $sondage->setCampagnes($this->lecture->getCampagnesBySondage($sondage));
            $campagnes=$sondage->getCampagnes();
            foreach ($campagnes as $campagne)
            {   
                $dateDebut=$campagne->getDatedebutDB();
                if($dateDebut->toValue()<=time()) //Pour le vrai : changer '<=' en '=='
                {
                    $campagne->setAbonnes($this->lecture->getAbonnesByCampagne($campagne));
                    $abonnes=$campagne->getAbonnes();
                    echo 'Dans la campagne '.$campagne->getLibelle(); //
                    foreach ($abonnes as $abonne)
                    {
                        echo '<br/>_______________________________________________________<br/>';
                        $contenuMail=$campagne->getContenuEmail();

                        $contenuMail=str_replace ("#nom#", $abonne->getNom(), $contenuMail);
                        $contenuMail=str_replace ("#prenom#", $abonne->getPrenom(), $contenuMail);
                        $contenuMail=str_replace ("#mail#", $abonne->getEmail(), $contenuMail);
                        $contenuMail=str_replace ("#civilite#", $abonne->getCivilite(), $contenuMail);
                        $contenuMail=str_replace ("#lien#", "http://".$_SERVER['SERVER_NAME']."/questionnaire/repondre/id/".$sondage->getId()."/a/".$abonne->getCodeId(), $contenuMail);


                        $contenuMailFinal=nl2br($contenuMail);
                        echo $contenuMailFinal;
                    }
                }
                echo '<br/><br/><br/>';
            }
        }
    }

    /*
     * Fonction appellée par le cron pour les relances de sondage
     */
    public function relancesondageAction() {
        $sondages=$this->lecture->getAllSondages();
        foreach ($sondages as $sondage)
        {
            $sondage->setCampagnes($this->lecture->getCampagnesBySondage($sondage));
            $campagnes=$sondage->getCampagnes();
            foreach ($campagnes as $campagne)
            {
                $dateDebutRelance=$campagne->getDateDebutRelanceDB();
                $nbrRelance=$campagne->getNbRelance();
                $freqRelance=$campagne->getFrequenceRelance();
                $dateRelance=$dateDebutRelance;
                for($i=0;$i<$nbrRelance;$i++)
                {
                    if($dateRelance->toValue()<=time()) //Pour le vrai : changer '<=' en '=='
                    {
                        $campagne->setAbonnes($this->lecture->getAbonnesByCampagne($campagne));
                        $abonnes=$campagne->getAbonnes();
                       
                        //Pour le test
                        echo 'Campagne '.$campagne->getLibelle().' : Relance numéro '.($i+1).' le '.$dateRelance.' : Email envoyé : <br/><br/>'; //à enlever
                        foreach ($abonnes as $abonne)
                        {
                            if($abonne->getRepondu()==0 && $abonne->getRelance()==1)
                            {
                                $contenuMail=$campagne->getContenuEmail();
//possibilité d'appeler une fonction
                                $contenuMail=str_replace ("#nom#", $abonne->getNom(), $contenuMail);
                                $contenuMail=str_replace ("#prenom#", $abonne->getPrenom(), $contenuMail);
                                $contenuMail=str_replace ("#mail#", $abonne->getEmail(), $contenuMail);
                                $contenuMail=str_replace ("#civilite#", $abonne->getCivilite(), $contenuMail);
                                $contenuMail=str_replace ("#lien#", "http://".$_SERVER['SERVER_NAME']."/questionnaire/repondre/id/".$sondage->getId()."/a/".$abonne->getCodeId(), $contenuMail);


                                $contenuMailFinal=nl2br($contenuMail);
                                echo $contenuMailFinal;
                                echo '<br/>-------------------------------------------<br/>';
                            }
                        }
                    }
                    else
                    {
                        echo 'Campagne '.$campagne->getLibelle().' : Relance numéro '.($i+1).' pas encore envoyée<br/><br/>'; //
                    }
                    $dateRelance=$dateRelance->add($freqRelance,Zend_Date::DAY);
                echo '<br/>_______________________________________________________<br/>';
                echo '<br/><br/><br/>';
                }
            }
        }
        //ZEND_DEBUG::dump($sondages);die;
    }
}
?>

Merci d'avance.

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages