Tras hacer una migración de un prestashop (Versión 1.2.5.0 ) de un cliente  a un nuevo entorno de producción el sistema de alertas por correo de prestashop dejo de funcionar. Dicha tienda cuenta con un servidor de correo externo (smtp propio de la empresa), tras comprobar varios puntos básicos  tales como conectividad, probar con servidores de terceros (gmail) vimos que el sistema había dejado de funcionar  en el nuevo entorno.

Algunas de las incidencias/anomalías que produce además de no mandar el correo son:

  • Cuando intentamos mandar un correo al cliente a través de la ficha del pedido, Prestashop nos redirige la página inicial.
  • Los pedidos no aparecen en el listado de pedidos del backend, únicamente se registran en la ficha de cada cliente.

Dicho entorno tenia deshabilitado el safemode de php.


 En las líneas 160 en adelante del fichero  tools\swift\Swift\Plugin\MailSend.php detectamos que se comprobaba si tenemos habilitado el safe modo en php, dicha comprobación no funciona, por lo que deberemos elegir entre habilitar el safe mode o quitar la comprobación.

public function doMail($to, $subject, $message, $headers, $params)
 154    {
 155      $original_from = @ini_get("sendmail_from");
 156      @ini_set("sendmail_from", $this->returnPath);
 157
 158      $headers = $headers->build();
 159
 160      if (!ini_get("safe_mode")) $success = mail($to, $subject, $message, $headers, $params);
 161      else $success = mail($to, $subject, $message, $headers);
 162
 163      if (!$success)
 164      {
 165        @ini_set("sendmail_from", $original_from);
 166        throw new Swift_ConnectionException("Sending failed using mail() as PHP's default mail() function returned boolean FALSE.");
 167      }
 168      @ini_set("sendmail_from", $original_from);
 169    }
 170  }

 

Problema al enviar correo en prestashop

Deja un comentario

A %d blogueros les gusta esto: