Symfony 2.8 y Swiftmailer en entorno de desarrollo

Es posible que Usted como yo, necesite probar que el envío de emails funciona adecuadamente, aunque esté en un entorno de desarrollo. Es decir: Usted quiere que el envío de emails desde su aplicación, funcione como si estuviera en un entorno de producción, y de ese modo el email sea realmente enviado desde su localhost y el destinatario de su correo, los reciba en su bandeja de entrada.

Mi punto de partida

Estoy desarrollando una aplicación con Symfony 2.8. Viene ya instalado el bundle de Swiftmailer para el manejo y envío de emails. Tengo escrito en mi controlador una rutina de prueba como esta:

// DocentesController.php
  public function enviarmailAction($name)
{
        $enviado_por='myemail@gmail.com';
                $enviado_para='toemail@gmail.com';
    $message = \Swift_Message::newInstance()
        ->setSubject('Hello Email')
        ->setFrom($enviado_por)
        ->setTo($enviado_para)
        ->setBody(
            $this->renderView(
                'docentes/email.txt.twig',
                array('name' => $name)
            )
        )
    ;
    $this->get('mailer')->send($message);
    return $this->render('docentes/email_enviado.html.twig',  
            array('message'=>$message, 'enviado_por' => $enviado_por, 'enviado_para' =>$enviado_para));
}    

Como puede verse, se utilizan dos plantillas de Twig. Una con el texto que contendrá el “Body” del email y otra que se muestra una vez que el email ha sido enviado. Estas plantillas muy simples, se presentan a continuación.
El archivo email.txt.twig solo contiene el siguiente texto:

Este es un mensaje de prueba

La plantilla de Twig que se muestra después del envío, llamada email_enviado.html.twig, es la siguiente:

{% block body %}
    <div align="left">
Usted ha enviado el siguiente e-mail:<br><br>
    De:  {{enviado_por}} <br>   
    Para:    {{enviado_para}}  <br>
    Asunto: {{message.subject}} <br>
    Body: {{message.body}} <br>
    </div>
{% endblock %}    

Mantener las cosas simples

Para hacer las pruebas de envío de emails en el entorno de desarrollo, utilizaré como servidor de correo a gmail, ingresando con mi usuario y contraseña de mi cuenta de gmail

Para probar el envío real de emails desde mi localhost, necesito configurar (y lo haré de la manera más básica posible) en mi aplicación de Symfony, los siguientes archivos:

# config_dev.yml

swiftmailer:
    transport: gmail
    username:  micuenta@gmail.com   
    password:  **********
    spool:
        type: memory

Luego:

# parameters.yml
parameters:
    database_host: 127.0.0.1
    database_port: null
    database_name: cursospiero
    database_user: root
    database_password: null
  
    mailer_user: micuenta@gmail.com
    mailer_password: *********

Verificar la configuración de la cuenta de Gmail

Para que todo lo anterior funcione, debo asegurarme que en mi cuenta de gmail, en htpps://myaccount.google.com/security se configure como: “Permitir el acceso de aplicaciones menos seguras:” a tal como se muestra en la imagen siguiente.
adecuar-google
Además, si tiene configurada la autenticación en dos pasos, deberá cambiarla, porque de otra manera le traerá problemas para usar el servidor de correo de gmail.

Desactivar el antivirus

Otro detalle que no puede obviar, porque le puede complicar la vida, es el antivirus. En mi caso utilizo Avast con todas las funcionalidades de seguridad para Internet, incluido un firewall. Para que las pruebas de envío de emails puedan realizarse sin problemas, deberemos desactivar el antivirus por un tiempo limitado, de otra manera bloqueará el envío de emails a través de nuestro localhost.

Y bien, esto es todo para empezar. Pruébelo para ver si a Usted le funciona.

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 )

Google photo

Estás comentando usando tu cuenta de Google. 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 )

Conectando a %s