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 SÍ tal como se muestra en la imagen siguiente.
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.