Enviar correos con Swiftmailer desde Zend Framework 2

Personalmente me gusta mucho Swiftmailer para enviar correos, así que veremos como enviar correos con Swiftmailer desde Zend Framework 2.

Primero descargamos Swiftmailer y lo descomprimimos dentro del directorio vendor/.

Incluimos la librería en el fichero Composer.json:

{
    "name": "zendframework/skeleton-application",
    "description": "Skeleton Application for ZF2",
    "license": "BSD-3-Clause",
    "keywords": [
        "framework",
        "zf2"
    ],
    "homepage": "http://framework.zend.com/",
    "require": {
        "php": ">=5.3.2",
        "zendframework/zendframework": "2.2.*"
    },
     "autoload":{
        "classmap": ["vendor/librerias/"],
        "files": ["vendor/Swift-5.0.3/lib/swift_required.php"]
    }
}

En este caso en lugar de cargar todas las clases de un directorio solo cargamos la requerida para evitar conflictos.

Ojo, tener todas las librerías contenidas en el mismo directorio puede dar problemas actualmente, lo mejor es tener separadas en directorios diferentes todas las librerías.

Actualizamos los vendors:
instalar modulos de terceros en zend framework 2 php composer.phar update

En un método de un controlador:

public function enviarAction(){
        // Podemos incluir la libreria de esta forma
        // require_once './vendor/librerias/Swift-5.0.3/lib/swift_required.php';

/* 
*   Creamos la instancia para el transporte SMTP
*  le indicamos el servidor smtp a utilizar y el puerto
*  le indicamos el usuario y la contraseña 
*  de nuestra cuenta de correo
*/
        $transport= \Swift_SmtpTransport::newInstance('smtp.gmail.com', 587)
                                    ->setUsername('correo@gmail.com')
                                    ->setPassword('contraseña');
    // Creamos el mensaje
    $message = \Swift_Message::newInstance()

    //Al ser un formulario de contacto nos lo enviamos a nosotros mismos
    ->setTo(array(
      "correo@gmail.com" => "Contacto Victor Robles",
    ))

    // Definimos el asunto
    ->setSubject("Pruebas")

    // Escribimos el mensaje en html
    ->addPart('<h1>Mensaje enviado con Swiftmailer - Victor Robles</h1>', 'text/html')
    
    // Indicamos que el mensaje llega desde nuestra cuenta de correo
    ->setFrom("correo@gmail.com", "Correo con Swiftmailer")
    
    // Añadimos un archivo adjunto que esta el directorio public       
    ->attach(\Swift_Attachment::fromPath("public/img/zf2-logo.png"));
    
    // Enviamos el email
    $mailer = \Swift_Mailer::newInstance($transport);
    $mailer->send($message);
        
       return $this->redirect()->toRoute("usuarios");
    }

Cuando utilicemos este método action nos llegará un email formateado en HTML y con una imagen adjunta.

Más información:
Enviar correos con Swiftmailer

Víctor Robles WEB

Autor: Victor

Desarrollador web - Formador online - Blogger

Compartir este post

Poner un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *