use Galerie\Model\GalerieInfoTable;
use Galerie\Form\GalerieForm;
use Galerie\Export\GalerieWorkbook;
+use Galerie\Mail\MailSender;
use Custom\View\Helper\Format;
public function getServiceConfig()
{
+ $config = $this->getConfig();
return array(
'factories' => array(
'Galerie\Model\GalerieTable' => function($sm) {
'Galerie\Export\GalerieWorkbook' => function ($sm) {
return new GalerieWorkbook;
},
+ 'Galerie\Mail\MailSender' => function($sm) use ($config) {
+ $result = new MailSender;
+ $result::initialize($config['mail']);
+ return $result;
+ },
),
);
}
'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',
),
'verb' => 'get',
),
+ 'mail' => array(
+ 'type' => 'Literal',
+ 'options' => array(
+ 'route' => '/mail',
+ 'defaults' => array(
+ 'action' => 'mail',
+ ),
+ ),
+ 'verb' => 'get',
+ ),
/*
'default' => array(
'type' => 'Segment',
),
),
),
+ 'mail' => array(
+ 'name' => 'free',
+ 'host' => 'smtp.free.fr',
+ 'port' => 25,
+ ),
);
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
private $_galerieInfoTable;
private $_galerieForm;
private $_galerieInfoExporter;
+ private $_galerieMailSender;
+ private $_viewResolver;
private $_translator;
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;
+ }
+
}
+ 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
--- /dev/null
+<?php
+
+namespace Galerie\Mail;
+
+use Zend\Mail\Transport\Smtp as SmtpTransport;
+use Zend\Mail\Transport\SmtpOptions;
+use Zend\Mail\Message;
+
+use Zend\Mime\Part as MimePart;
+use Zend\Mime\Mime as Mime;
+use Zend\Mime\Message as MimeMessage;
+
+
+
+
+class MailSender
+{
+
+ protected static $transport = null;
+
+ public static function initialize($params)
+ {
+ static::$transport = new SmtpTransport();
+ static::$transport->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);
+ }
+
+}
+
--- /dev/null
+<html><head><title>Test</title></head><body><p>Hello <strong><?php echo $who; ?></strong> 4.</p></body></html>