Programación Web y SEO, Ingeniero Industrial

Error de la función mail() en Prestashop [solucionado]

Si desde Prestashop has obtenido el siguiente error:

En Back Office > Preferencias > Emails has entrado y en Compruebe la configuración de su email has pulsado “Enviar un email de prueba a un correo” y te ha aparecido el siguiente mensaje:

 Sending failed using mail() as PHP’s default mail() function returned boolean FALSE.

Aquí te voy a enseñar como solucionarlo:

Lo primero hay que averiguar si funciona la función mail() de php. Para ello creamos un archivo que se llame por ejemplo mail.php y lo guardaremos en el directorio raíz por FTP de nuestro servidor de tienda virtual. El contenido de mail.php es el siguiente:  OJO sustituir [email protected] por nuestro email

<?php

// El mensaje

$mensaje = “Línea 1\nLínea 2\nLínea 3”;

// En caso de que cualquiera de las líneas sea más larga de 70 caracteres,

// debe usarse wordwrap()

$mensaje = wordwrap($mensaje, 70);

// Send

mail(‘[email protected]’, ‘Mi título’, $mensaje);

?>

Una vez subido el archivo ejecutamos en el navegador: http://www.midominio.com/mail.php
Si esto no funciona y no nos llega a [email protected] es que el servidor no ejecuta correctamente esta función o no tiene permisos para ello.
En caso afirmativo y si nos llega el email es que está funcionando correctamente la función mail, por lo que el error está en Prestashop.
Para solucionarlo tenemos que añadir dos líneas de código  en dos archivos de nuestra instalación de Prestashop:

En la carpeta /tools/swift/Swift.php después de la línea 370:

if (!($has_reply_to = $message->getReplyTo())) $message->setReplyTo($from);

Añadir la siguiente línea:

if (!$has_reply_to[0])$message->setReplyTo($from->getAddress());

Después de la línea 159 en /tools/swift/Swift/Plugin/MailSend.php

Añadir:

$params = “”;

Si te ha funcionado dímelo en comentarios.

Si tienes algún comentario o pregunta indícalo.

8 respuestas a Error de la función mail() en Prestashop [solucionado]

Página 1 de 11
  • lopezatienza dice:

    Buenas.

    Comentar que me ha funcionado modificando los 3 archivos, aunque he de añadir que sólo modificando los 3 archivos no me ha valido, googleando también parece que es obligatorio utilizar un correo del propio dominio de tu prestashop (yo probaba con una de gmail y nada)

    Agradecer el tiempo por escribir el artículo Eduardo, y aprobecho la ocasión para que accedas a un artículo de mi blog donde detallo cómo hacer para que wordpress no te modifique las comillas simples por acentos jeje ya que al copiar el código de tu página pasa esto.

    http://www.lopezatienza.es/php/php-deshabilitar-formateado-de-comillas-dobles-y-simples-wordpress/

    Un saludo!

  • Sergio dice:

    Tu código no me funciona, pero por suerte he encontrado este que va perpecto en PRestashop 3.5.1

    It can be fixed changing these files:
    /tools/swift/Swift/Plugin/MailSend.php
    /tools/swift/Swift/Message.php
    /tools/swift/Swift.php

    /tools/swift/Swift/Plugin/MailSend.php (around line 158)

    Old:
    $headers = $headers->build();

    New:
    $headers = $headers->build();
    $params = “”;

    /tools/swift/Swift/Message.php (around line 79)

    Old:
    $this->setFrom(“”);

    New:
    $this->setFrom(“[email protected]”);

    /tools/swift/Swift.php (around line 370)

    Old:
    if (!($has_reply_to = $message->getReplyTo())) $message->setReplyTo($from);

    New:
    if (!($has_reply_to = $message->getReplyTo())) $message->setReplyTo($from);
    if (!$has_reply_to[0]) $message->setReplyTo($from->getAddress());

Página 1 de 11

Deja un comentario

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

Categorías del Blog
Comprueba dominios libres