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

¿Todo configurado y no funcionan los emails en Prestashop?

Hoy toca hablar de otro clásico, lo primero es que no me estoy refiriendo al típico módulo de alertas por correo, que entre otra cosas si recordamos no servia para habilitar las notificaciones al administrador de la tienda de los nuevos pedidos.

Tampoco estamos hablando de la opción Parámetros Avanzados -> Correo Electrónico donde si recordamos nos permitía configurar entre otras opciones si para el envío de los emails, trabajamos con la función “mail()” o con una configuración especifica mediante SMTP.

Si estas teniendo problemas con “algún” email en especifico en la tienda, te recomiendo revisar la pestaña Parámetros Avanzados -> Registro/Logs, posiblemente te lleves una sorpresa y te diga que no encuentra determinadas plantillas de emails.