Planes de hosting
Servicios de hosting que se adaptan a las necesidades de tu proyecto
Planes Multicuenta
Hosting para desarrolladores, agencias y empresas, pudiendo gestionar las cuentas de tus clientes
Dominios
Registra o transfiere tu dominio de forma sencilla y al mejor precio
Soluciones
Conócenos
Magento en sus versiones 1.x (incluida la 1.9) utiliza por defecto la función mail() de PHP para el envío de correos, lo que puede provocar que los correos sean clasificados como spam o directamente rechazados por proveedores como Orange, Gmail o Hotmail.
A diferencia de Magento 2, las versiones 1.x no incluyen una opción nativa en el panel de administración para configurar SMTP, por lo que existen dos alternativas: instalar una extensión o editar manualmente el código.
La extensión gratuita y de código abierto SMTP Pro Email de ASchroder es la más utilizada para este fin. Es compatible con Magento 1.x hasta la versión 1.9.4.x.
Accedemos vía SSH al directorio raíz de Magento y descargamos la extensión desde GitHub:
cd ~/public_html wget https://github.com/aschroder/Magento-SMTP-Pro-Email-Extension/archive/refs/heads/master.zip -O smtp-pro.zip
Descomprimimos el archivo y copiamos la carpeta app al directorio raíz de Magento, que fusionará los ficheros con la estructura existente:
unzip smtp-pro.zip cp -r Magento-SMTP-Pro-Email-Extension-master/app/ ./app/
Eliminamos los ficheros temporales de la descarga:
rm -rf Magento-SMTP-Pro-Email-Extension-master smtp-pro.zip
Desde el panel de administración de Magento accedemos a System > Cache Management, seleccionamos todos los tipos de cache y pulsamos Refresh. Alternativamente por SSH:
rm -rf var/cache/*
Tras limpiar la cache, cerramos sesión y volvemos a iniciar sesión en el panel de administración para que los cambios se apliquen correctamente.
Una vez instalada la extensión, accedemos en el administrador de Magento a System > Configuration, y en el menú lateral izquierdo buscamos la sección ASCHRODER EXTENSIONS > SMTP Pro.
Configuramos los siguientes parámetros:
Usamos localhost como host y el puerto 25 sin SSL porque se trata de una conexión local dentro del mismo servidor, lo que hace que el cifrado no sea necesario.
Guardamos los cambios pulsando Save Config en la parte superior derecha.
La extensión incluye una opción de prueba integrada. Desde la misma sección de configuración SMTP Pro, buscamos el botón o enlace de Test que permite enviar un correo de prueba para verificar que la configuración es correcta.
También es recomendable realizar un envío de prueba real, por ejemplo realizando un pedido de prueba o usando el formulario de contacto de la tienda, y verificar que el correo llega correctamente al destinatario.
Si usas una cuenta externa a nuestros servicios, como Gmail u Office 365, los datos de servidor, puerto, usuario y cifrado deberán corresponder a los proporcionados por dicho servicio.
Si no es posible o no se desea instalar una extensión, se puede forzar el uso de SMTP editando directamente los ficheros encargados del envío de correos en Magento. Es necesario modificar dos ficheros: Template.php que gestiona los envíos directos y Queue.php que gestiona los envíos en cola (introducido en Magento 1.9.1+).
Importante: nunca se deben editar los ficheros del directorio
app/code/core/directamente, ya que cualquier actualización de Magento los sobrescribiría. En su lugar, se utiliza el directorioapp/code/local/que tiene prioridad sobrecorey no se ve afectado por actualizaciones.
Accedemos vía SSH al directorio raíz de Magento y creamos la estructura de directorios necesaria en app/code/local/:
mkdir -p app/code/local/Mage/Core/Model/Email/
Copiamos los dos ficheros originales:
cp app/code/core/Mage/Core/Model/Email/Template.php app/code/local/Mage/Core/Model/Email/Template.php cp app/code/core/Mage/Core/Model/Email/Queue.php app/code/local/Mage/Core/Model/Email/Queue.php
Abrimos app/code/local/Mage/Core/Model/Email/Template.php y buscamos el método getMail(), cuyo contenido original es:
public function getMail() { if (is_null($this->_mail)) { $this->_mail = new Zend_Mail('utf-8'); } return $this->_mail; }
Lo reemplazamos por el siguiente código, que configura el transporte SMTP con autenticación:
public function getMail() { if (is_null($this->_mail)) { $smtp_host = Mage::getStoreConfig('system/smtp/host'); $smtp_port = Mage::getStoreConfig('system/smtp/port'); $config = array( 'port' => $smtp_port, 'auth' => 'login', 'username' => 'noreply@tudominio.com', 'password' => 'tu_contraseña' ); $transport = new Zend_Mail_Transport_Smtp($smtp_host, $config); Zend_Mail::setDefaultTransport($transport); $this->_mail = new Zend_Mail('utf-8'); } return $this->_mail; }
Abrimos app/code/local/Mage/Core/Model/Email/Queue.php y buscamos dentro del método send() las siguientes líneas:
ini_set('SMTP', Mage::getStoreConfig('system/smtp/host')); ini_set('smtp_port', Mage::getStoreConfig('system/smtp/port'));
Las reemplazamos por el bloque que configura el transporte SMTP de forma idéntica:
$smtp_host = Mage::getStoreConfig('system/smtp/host'); $smtp_port = Mage::getStoreConfig('system/smtp/port'); $config = array( 'port' => $smtp_port, 'auth' => 'login', 'username' => 'noreply@tudominio.com', 'password' => 'tu_contraseña' ); $transport = new Zend_Mail_Transport_Smtp($smtp_host, $config); Zend_Mail::setDefaultTransport($transport);
Además, dentro del mismo método send(), buscamos el bloque condicional que establece el transporte Sendmail:
if ($parameters->getReturnPathEmail() !== null) { $mailTransport = new Zend_Mail_Transport_Sendmail("-f" . $parameters->getReturnPathEmail()); Zend_Mail::setDefaultTransport($mailTransport); }
Y lo eliminamos o comentamos, ya que de lo contrario sobrescribiría nuestro transporte SMTP cuando exista un return-path configurado.
En ambos ficheros, sustituye noreply@tudominio.com y tu_contraseña por los datos reales de una cuenta de correo creada en cPanel.
Desde el administrador de Magento accedemos a System > Configuration > Advanced > System > Mail Sending Settings y verificamos que los valores son:
Estos valores son los que lee el código mediante Mage::getStoreConfig('system/smtp/host') y Mage::getStoreConfig('system/smtp/port').
Si Magento tiene el compilador activado (comprobable en System > Tools > Compilation), es necesario limpiar y recompilar para que los cambios se apliquen correctamente:
php shell/compiler.php clear php shell/compiler.php compile
Finalmente, limpiamos la cache para que Magento cargue los ficheros del directorio local en lugar de los de core:
rm -rf var/cache/*
username debe existir creada en cPanel.mail().app/code/local/ se mantendrán, pero conviene revisar que sigan siendo compatibles con la nueva versión.maintenance.flag del directorio raíz de Magento.