Evitar el envío de un email en Prestashop

No estamos hablando de desactivar el envío de un determinado email en base a los estados de pedidos (Pedidos -> Estados).

Realmente es útil para aquellos emails que no podemos deshabilitar en el panel, pero que queremos deshabilitar. Tampoco hablamos de desactivar el envío de emails en general.

Por ejemplo, vamos a desactivar este email, que recibe el cliente nada más el realizar el pedido: Este email usa la plantilla “order_conf“.

Email del pedido en Prestashop
Email del pedido en Prestashop

Lo que vamos hacer es un “override” de la clase Mail.php y vamos a indicar que si nos llega la plantilla “order_conf“, el email no se envía. Como los envíos de los emails usan la función Send de la clase Mail pues hacemos la comprobación directamente en la clase.

Creamos el fichero con el nombre “Mail.php” que vamos a guardar en el directorio “/overrides/classes/

<?php
class Mail extends MailCore
{
public static function Send($id_lang, $template, $subject, $template_vars, $to,
$to_name = null, $from = null, $from_name = null, $file_attachment = null, $mode_smtp = null,
$template_path = _PS_MAIL_DIR_, $die = false, $id_shop = null, $bcc = null, $reply_to = null)
{
// No envía el email de la plantilla que nosotros vayamos a igualar en el "if"
if ($template == 'order_conf') {
return true;
}

return parent::Send($id_lang, $template, $subject, $template_vars, $to, $to_name, $from, $from_name, $file_attachment, $mode_smtp, $template_path, $die, $id_shop, $bcc, $reply_to);
}
}

Si observáis el código, aquí:


if ($template == 'order_conf')

estamos haciendo la comprobación de la plantilla.

Esto tiene un problema, que, si la misma plantilla la usan otras partes de la tienda, pues tampoco se enviara ese “email” 🙂

Por cierto, en su momento hicimos una guía específica para evitar que el cliente reciba el email de confirmación en Prestashop (es una forma diferente, pero más “especifica”, en este ejemplo hablamos de “forma general” para cualquier email que use la plantilla que se usa el email que recibe el cliente al realizar un pedido con el resumen del pedido).

Hemos puesto un ejemplo, pero podría haber sido con otra plantilla.

Información obtenida en:

https://www.prestashop.com/forums/topic/315165-disable-mail-for-credit-slip/

Documento realizado bajo Prestashop 1.6.1.12