Magento 1.9.x local y en modo desarrollo con correos electrónicos

Que mejor que desarrollar tus módulos, plantillas o personalizaciones de Magento en una copia en local y después utilizar alguna estrategia de deployment como las que hemos platicado en este sitio. Además, utilizaremos un truco para intervenir el envío de correos en localhost ya que estos son sumamente importantes en un ambiente Magento.

Este tutorial se basa en Magento 1.9 y Apache/MySQL (instalado con brew) en Mac OS X pero debería funcionar con otra combinación

1. Primero editamos el htaccess en el document root de nuestro Magento y agregamos:

2. El siguiente paso, solo aplica si usamos php 5: En la sección <IfModule mod_php5.c> del .htaccess agregamos:

3. Abrimos el index.php y desorientamos la línea en donde se define que el display errors será 1:

4. Renombramos el archivo errors/local.xml.sample a errors/local.xml

Entramos al admin.

5. Para no estar vaciando cache, vamos a desactivarla. Entramos en System > Cache Management y seleccionamos todos, damos click en el menú desplegable de acciones y elegimos “disable” y por último, click en submit.

6. Habilitamos logs en poniendo “yes” en:  System > Configuration > Advanced > Developer > Log Settings

7. Vamos a System > Index Management, seleccionamos todos, en el menú desplegable, elegimos reindex y damos click en submit.

Correos electrónicos

Por ultimo, engañaremos a Magento en nuestro entorno local, para guardar en el archivo de log, el resultado de envíos de correo electrónico. Esta funcionalidad existe en el fichero: app/code/core/Mage/Core/Model/Email/Template.php

Para sobre escribir esta funcionalidad, debemos copiar el archivo a:
app/code/local/Mage/Core/Model/Email/Template.php

Vamos a la línea 451 en la versión 1.9.3.9 (si no lo encuentran en esa línea, es cosa de buscar en el archivo) y veremos lo siguiente:

En el código, agregamos lo necesario para que quede como el siguiente snippet:

Hay que notar, que estamos escribiendo hasta 4 archivos, dependiendo si el mail está configurado para texto plano o html. Como no tenemos un servidor de correo local, todos los correos nos enviaran un archivo de “email_error”.

Tip adicional:

Para hacer mejor debugging, podemos utilizar el siguiente snippet en cualquier parte de nuestro código y arrojara información que nos puede ser útil en los logs: