Enviar email en Symfony con Zend framework

sobre

Este es un mini tutorial acerca de como enviar emails en Symfony usanto el protocolo SMTP y el servidor Gmail de Google. Para ello vamos a instalar el framework Zend y configuraremos Symfony para que lo utilize. Además, esto servirá para emplear otros módulos de Zend que pueden completar a Symfony.

En primer lugar descargamos ZendAsumo que Symfony se encuentra instalado y en uso— del sitio oficial. Para ello debemos registrarnos si no tenemos cuenta. A día de hoy se encuentra disponible la 1.7. Vamos a elegir la versión mínima.

Tras descomprimir el zip no quedaremos solo con los módulos necesarios para nuetra actividad. Debemos copiar los siguientes archivos y directorios a /lib/vendor/Zend de nuestro proyecto Symfony:

Exception.php
/Loader
Loader.php
/Mail
Mail.php
/Mime
Mime.php
Registry.php
/Validate
Validate.php

Tras esto tenemos que indicar a Symfony que debe carcar las nuevas clases modificando el fichero <nombreAplicación>Configuration.class.php que se encuentra en /app/<nombreAplicación>/config con el siguiente código:

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.php';
Zend_Loader::registerAutoload();
self::$zendLoaded = true;
}

La constante sf_lib_dir devuelve la ruta al /lib de nuestro proyecto.

Con lo anterior ya estamos listos para cargar el módulo de correo. Zend proporciona varios protocolos para enviar correos electrónicos. Si no se dice nada, por defecto la clase Zend_mail es un envoltorio de la función mail() de PHP, una función que no recomiendo para envio masivo de correo porque tiene un elevado consumo de recursos para el servidor. Nosotros emplearemos el protocolo SMTP y lo haremos empleado el servidor de Gmail, con el que podremos enviar correos desde nuetra cuenta. Para ello:

frontendConfiguration::registerZend();
$config = array(
'auth' => 'login',
'username' => 'tu_usuario_gmail',
'password' => 'password_de_tu_cuenta',
'ssl' => 'ssl',
'port' => 465
);
$tr = new Zend_Mail_Transport_Smtp('smtp.gmail.com',$config);
Zend_Mail::setDefaultTransport($tr);
$mail = new Zend_Mail();
$mail->setBodyText(<<
El cuerpo de tu correo.
es muy fácil.
EOF
);
$mail->setFrom('origen@origen.com', 'Nombre');
$mail->addTo('destino@destino.com');
$mail->setSubject('El asunto');
$mail->send();

La documentación es muy completa y describe como adjuntar archivos, crear un cuerpo HTML…
Existen otros framework dedicados exclusivamente al envio de correo como Swift mailer o PHP mailer. Todos se instalan de forma similar pero la elección de Zend es debido a que complementa muy bien a Symfony.

Recursos:

Symfony project.

Zend Framework

Documentación del módulo Mail de Zend Framework

1 comentario

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: