![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRHwTCNrUNr9hUV7sz4YLlDDt1OTpWSvU9WyLbtFEc2Va44rU4U7UxmlkoxHHxcLip_fJP1iTGW_OC4rX0Kvs8oZaDg8jtngUadpcvECs5f4Q6qul2Ayu5ybZhBWyiRaA9rxX_zyXmeY5v/s320/Swift-Mailer-0.png)
Requisitos:
- Windows XP, o Linux
- Apache 2 instalado
- PHP 5.2 instalado (extension openssl para SSL o TLS)
- CakePhp 1.2, instalado
- MySQL 5, opcional
Implementar un mecanismo para el envio de email (Sin CakeMailer).
Instalación:
- Desacargar SwiftMailer y copiarlo en /app/vendors/swift_mailer
- Copiar este componente a /app/controllers/components/swift_mailer.php
Uso:
Ubicar la libreria...
La carpeta vendors debería tener este aspecto:
Crear los layouts...
Para que el componente funcione correctamente se debe de crear un layout por defecto (default.ctp) para los emails: html y text. Estos últimos deben de estar ubicados en la carpeta /app/views/layouts/email/.
La carpeta de los layouts debería tener este aspecto: (Ej. default.ctp)
Crear las vistas...
Para el contenido de los emails se necesitarán plantillas, los cuales deben de estar ubicados en la carpeta /app/views/elements/email/.
La carpeta de las plantillas del contenido del email debería tener este aspecto: (Ej. default.ctp)
En el controlador...
class TestsController extends AppController {
var $name = 'Tests';
var $helpers = array('Html');
var $components = array('SwiftMailer');
var $uses = null;
function testEmail() {
// se configuran los datos del email
$datos = array(
'nombre' => 'Cake User',
'asunto' => 'Email Test',
'mensaje' => 'Body Message'
);
$asunto = 'Email Test';
$destinatario = 'test@test.com';
$plantilla = "default";
// se configuran los parametros SMTP
$this->SwiftMailer->smtpHost = "mail.myhost.com";
$this->SwiftMailer->smtpPort = 25;
$this->SwiftMailer->smtpUsername = test@myhost.com;
$this->SwiftMailer->smtpPassword = "mypassword";
// se configuran los parametros de envio
$this->SwiftMailer->sendAs = 'html';
$this->SwiftMailer->from = "test@gmail.com";
$this->SwiftMailer->fromName = "Swift Mailer";
$this->SwiftMailer->to = $destinatario;
$this->SwiftMailer->replyTo = "replayto@gmail.com";
$this->SwiftMailer->bcc = array('bcc@host.com');
// se obtiene la fecha actual
$fechaHoraActual = date('d-m-Y H:i:s');
// se envian los parametros necesarios a la vista
$this->set('datos', $datos);
$this->set('fechaHoraActual', $fechaHoraActual);
try {
$exito = $this->SwiftMailer->send('default', $asunto);
if(!$exito) {
$this->log("Error sending email");
}
} catch(Exception $e) {
$this->log("Failed to send email: ".$e->getMessage());
$exito = false;
}
if(!$exito) {
$this->Session->setFlash('El email no pudo ser enviado.', 'default', array('class' => 'error'));
return false;
}
$this->Session->setFlash('El email fue enviado con exito.', 'default', array('class' => 'success'));
return true;
}
}
Listo!!!
Enlace Original:
- http://bakery.cakephp.org/articles/sky_l3ppard/2009/11/07/updated-swiftmailer-4-xx-component-with-attachments-and-plugins