Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
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
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
Merci pour les informations. Je vais essayer de les suivre et je vous tiendrai au courant.
Merci encore
Hors ligne
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.
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