From 0e50f86e2a2842121f7053983dcf6d326786f770 Mon Sep 17 00:00:00 2001 From: =?utf8?q?S=C3=A9bastien=20CHAZALLET?= Date: Thu, 29 Nov 2012 15:49:35 +0100 Subject: [PATCH] Gestion des courriels : exemple --- module/Galerie/Module.php | 7 +++ module/Galerie/config/module.config.php | 19 ++++++- .../src/Galerie/Controller/IndexController.php | 51 ++++++++++++++++++ module/Galerie/src/Galerie/Mail/MailSender.php | 57 ++++++++++++++++++++ module/Galerie/view/galerie/mail/test.phtml | 1 + 5 files changed, 134 insertions(+), 1 deletion(-) create mode 100644 module/Galerie/src/Galerie/Mail/MailSender.php create mode 100644 module/Galerie/view/galerie/mail/test.phtml diff --git a/module/Galerie/Module.php b/module/Galerie/Module.php index a21e4ec..d75f4f3 100644 --- a/module/Galerie/Module.php +++ b/module/Galerie/Module.php @@ -16,6 +16,7 @@ use Galerie\Model\GalerieTable; use Galerie\Model\GalerieInfoTable; use Galerie\Form\GalerieForm; use Galerie\Export\GalerieWorkbook; +use Galerie\Mail\MailSender; use Custom\View\Helper\Format; @@ -55,6 +56,7 @@ class Module implements public function getServiceConfig() { + $config = $this->getConfig(); return array( 'factories' => array( 'Galerie\Model\GalerieTable' => function($sm) { @@ -76,6 +78,11 @@ class Module implements 'Galerie\Export\GalerieWorkbook' => function ($sm) { return new GalerieWorkbook; }, + 'Galerie\Mail\MailSender' => function($sm) use ($config) { + $result = new MailSender; + $result::initialize($config['mail']); + return $result; + }, ), ); } diff --git a/module/Galerie/config/module.config.php b/module/Galerie/config/module.config.php index 21c80cc..c760d83 100644 --- a/module/Galerie/config/module.config.php +++ b/module/Galerie/config/module.config.php @@ -22,7 +22,9 @@ return array( 'galerie/index/del' => __DIR__ . '/../view/galerie/index/del.phtml', 'galerie/index/view' => - __DIR__ . '/../view/galerie/index/view.phtml', + __DIR__ . '/../view/galerie/index/view.phtml', + 'galerie/mail/test' => + __DIR__ . '/../view/galerie/mail/test.phtml', ), 'template_path_stack' => array( 'galerie' => __DIR__ . '/../view', @@ -138,6 +140,16 @@ return array( ), 'verb' => 'get', ), + 'mail' => array( + 'type' => 'Literal', + 'options' => array( + 'route' => '/mail', + 'defaults' => array( + 'action' => 'mail', + ), + ), + 'verb' => 'get', + ), /* 'default' => array( 'type' => 'Segment', @@ -177,4 +189,9 @@ return array( ), ), ), + 'mail' => array( + 'name' => 'free', + 'host' => 'smtp.free.fr', + 'port' => 25, + ), ); diff --git a/module/Galerie/src/Galerie/Controller/IndexController.php b/module/Galerie/src/Galerie/Controller/IndexController.php index 551d046..2bce519 100644 --- a/module/Galerie/src/Galerie/Controller/IndexController.php +++ b/module/Galerie/src/Galerie/Controller/IndexController.php @@ -2,10 +2,14 @@ namespace Galerie\Controller; + use Zend\Mvc\Controller\AbstractActionController; use Zend\View\Model\ViewModel; use Zend\View\Model\JsonModel; +use Zend\View\Renderer\PhpRenderer; + + use Galerie\Model\Galerie; class IndexController extends AbstractActionController @@ -15,6 +19,8 @@ class IndexController extends AbstractActionController private $_galerieInfoTable; private $_galerieForm; private $_galerieInfoExporter; + private $_galerieMailSender; + private $_viewResolver; private $_translator; @@ -64,6 +70,24 @@ class IndexController extends AbstractActionController return $this->_galerieInfoExporter; } + private function _getGalerieMailSender() + { + if (!$this->_galerieMailSender) { + $sm = $this->getServiceLocator(); + $this->_galerieMailSender = $sm->get('Galerie\Mail\MailSender'); + } + return $this->_galerieMailSender; + } + + private function _getViewResolver() + { + if (!$this->_viewResolver) { + $sm = $this->getServiceLocator(); + $this->_viewResolver = $sm->get('ViewResolver'); + } + return $this->_viewResolver; + } + @@ -111,6 +135,33 @@ class IndexController extends AbstractActionController } + public function mailAction() + { + //Construction du courriel au format HTML. + $mail_viewmodel = new ViewModel(array( + 'who' => 'World', + )); + $mail_viewmodel->setTemplate('galerie/mail/test'); + $renderer = new PhpRenderer; + $renderer->setResolver($this->_getViewResolver()); + $body_html = $renderer->render($mail_viewmodel); + + // Envoi du courriel + $mailSender = $this->_getGalerieMailSender(); + $mailSender->send( + 's.chazallet@gmail.com', 'Moi',//'sender@example.com', 'Moi', + 's.chazallet@gmail.com', 'Toi',//'to@example.com', 'Toi', + 'Test', 'Hello World 4.', $body_html + ); + + // Création de la réponse + $response = $this->getResponse(); + $response->setStatusCode(200); + $response->setContent('Mail Sent.'); + + return $response; + } + public function listAction() { // Récupération de l'objet requête diff --git a/module/Galerie/src/Galerie/Mail/MailSender.php b/module/Galerie/src/Galerie/Mail/MailSender.php new file mode 100644 index 0000000..42424a2 --- /dev/null +++ b/module/Galerie/src/Galerie/Mail/MailSender.php @@ -0,0 +1,57 @@ +setOptions(new SmtpOptions(array( + 'name' => $params['name'], + 'host' => $params['host'], + 'port' => $params['port'], + ))); + } + + + public function send( + $sender, $sender_name, $to, $to_name, $subject, $text_body, $html_body, $logo + ) { + // Création de la partie texte + $text = new MimePart($text_body); + $text->type = Mime::TYPE_TEXT; + + // Création de la partie HTML + $html = new MimePart($html_body); + $html->type = Mime::TYPE_HTML; + + // Création du message + $body = new MimeMessage(); + $body->setParts(array($text, $html)); + + $mail = new Message(); + $mail->setBody($body); + $mail->setFrom($sender, $sender_name); + $mail->addTo($to, $to_name); + $mail->setSubject($subject); + + static::$transport->send($mail); + } + +} + diff --git a/module/Galerie/view/galerie/mail/test.phtml b/module/Galerie/view/galerie/mail/test.phtml new file mode 100644 index 0000000..3aaf9a8 --- /dev/null +++ b/module/Galerie/view/galerie/mail/test.phtml @@ -0,0 +1 @@ +Test

Hello 4.

-- 1.7.10.4