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);
?>
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 = “”;
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!
Gracias, es cierto que lo de las comillas ” es un error que si no te das cuenta te puedes pegar un tiro!
Si me ha funcionado.
toner
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());
El codigo inicial no me funciona tampoco pero el de Sergio va perfecto.
Un saludo y gracias por vuestra ayuda
Gracias, esto va cambiando con las versiones. Aquí queda para quien lo necesite.
Pingback: Cómo comprobar si mi servidor ip o dominio está en una lista de SPAM o correo basura | Ofertas de trabajo para ingenieros
se daño el modulo mail al modificar con eso.