Cuando el administrador activa la cuenta de un afiliado, se debe mandar un email a ese usuario confirmándole su suscripción e indicándole cuál es su token.
PHP dispone de muchas librerías buenas para mandar emails, como por ejemplo SwiftMailer, Zend_Mail y ezcMail. Como en los tutoriales de los próximos días haremos uso de algunos componentes del Zend Framework, vamos a utilizar Zend_Mail para enviar los emails.
La librería Zend_Mail forma parte del Zend Framework. Como no queremos utilizar todos los componentes de este framework, vamos a instalar solamente los componentes necesarios en el directorio lib/vendor/, el mismo en el que instalamos Symfony.
En primer lugar, descarga el Zend Framework y descomprime sus archivos en el directorio lib/vendor/Zend/.
Las siguientes instrucciones se han probado con la versión 1.8.0 del Zend Framework.
A continuación, elimina todos los archivos y directorios salvo los siguientes, que son los que vamos a utilizar para enviar emails:
Exception.phpLoader/Loader.phpMail/Mail.phpMime/Mime.phpSearch/El directorio Search/ no lo necesitamos para enviar emails pero sí para el tutorial de mañana.
Después, añade el siguiente código en la clase ProjectConfiguration de tu proyecto para registrar el cargador automático de clases de Zend:
// config/ProjectConfiguration.class.php class ProjectConfiguration extends sfProjectConfiguration { static protected $zendLoaded = false; static public function registerZend() { if (self::$zendLoaded) { return; } set_include_path(sfConfig::get('sf_lib_dir').'/vendor'.PATH_SEPARATOR.get_include_path()); require_once sfConfig::get('sf_lib_dir').'/vendor/Zend/Loader/Autoloader.php'; Zend_Loader_Autoloader::getInstance(); self::$zendLoaded = true; } // ... }
Modifica la acción activate para enviar un email cuando el administrador valida un afiliado:
// apps/backend/modules/affiliate/actions/actions.class.php class affiliateActions extends autoAffiliateActions { public function executeListActivate() { $affiliate = $this->getRoute()->getObject(); $affiliate->activate(); // send an email to the affiliate ProjectConfiguration::registerZend(); $mail = new Zend_Mail(); $mail->setBodyText(<<<EOF Your Jobeet affiliate account has been activated. Your token is {$affiliate->getToken()}. The Jobeet Bot. EOF ); $mail->setFrom('jobeet@example.com', 'Jobeet Bot'); $mail->addTo($affiliate->getEmail()); $mail->setSubject('Jobeet affiliate token'); $mail->send(); $this->redirect('@jobeet_affiliate'); } // ... }
Para que el código anterior funcione correctamente, modifica jobeet@example.com por una dirección de email válida.
El sitio web del Zend Framework incluye un completo tutorial sobre la librería Zend_Mail.
válido para Symfony 1.2
no disponible en Symfony 1.3