Mensaje transaccional de compra se envia a varios clientes

Estado
Cerrado para nuevas respuestas

XIXO123

Nuevo usuario
Hola, uso el Magento 1.9.3.2 y ya desde hace un par de meses el mensaje transaccional de Correos electrónicos de ventas de Confirmación de Nuevo Pedido se envia a más clientes en las compras hechas en la web, aparte de al cliente que ha hecho la compra. No sé cómo solucionarlo ni que configuración tocar ya que me llaman clientes diciendo que les llega un mensaje de una compra que ellos no han hecho :/.

Solo he encontrado estos post en ingles que además dan una solución que para los que no sabemos tocar Magento y donde tocar nos suena a chino. https://magento.stackexchange.com/questions/95906/magento-order-email-sending-to-wrong-customer
https://community.magento.com/t5/Magento-1-x-Programming/Sales-order-email-sent-to-multiple-different-customers/td-p/40919

Esta parece ser una de las soluciones:

There appears to be a missing foreign key constraint on the core_email_queue_recipeints table, so when the cron job clears the core_email_queue table the recipients are left, and the truncation resets the primary key to 1, causing possible collisions of past customer email addresses with new orders.



To fix the problem in magento 1.9:



DELETE FROM core_email_queue_recipients WHERE message_id NOT IN (SELECT message_id FROM core_email_queue);
DELETE FROM core_email_queue_recipients WHERE recipient_id < (SELECT recipient_id FROM (SELECT recipient_id FROM core_email_queue_recipients ORDER BY message_id ASC, recipient_id DESC LIMIT 1) AS r);
ALTER TABLE core_email_queue_recipients ADD FOREIGN KEY(message_id) REFERENCES core_email_queue(message_id) ON DELETE CASCADE;
This will clear the orphan records from the recipient table, and apply the missing FK rule to the database.

TRaducido en otra página que pone lo mismo pone:

Afortunadamente la solución para este problema es fácil de realizar.

Todo lo que necesita es limpieza las identificaciones de mensajes repetidos en la tabla core_email_queue_recipients y asegurándose de que cuando un mensaje se elimina de la tabla de core_email_queue , al mismo tiempo sus destinatarios correspondientes Haz eliminados en la tabla core_email_queue_recipients .

La mejor manera de lograr esto es crear una clave externa que vincula estos registros y elimina en cascada (pero necesita hacer alguna limpieza antes de que usted puede hacer eso).

Este es el procedimiento para resolver el problema:

1) ejecutar las siguientes dos consultas SQL para limpiar la tabla de core_email_queue_recipients de los registros huérfanos y ids mensajes repetidos:

DELETE FROM core_email_queue_recipients WHERE message_id NOT IN (SELECT message_id FROM core_email_queue);
DELETE FROM core_email_queue_recipients WHERE recipient_id < (SELECT recipient_id FROM (SELECT recipient_id FROM core_email_queue_recipients ORDER BY message_id ASC, recipient_id DESC LIMIT 1) AS r);
La primera consulta elimina los registros huérfanos y segundo borra registros antiguos que ya no son válidos.

2) cree una clave externa en la tabla de core_email_queue_recipients para eliminar los registros de beneficiarios en cascada. La consulta SQL para crear esta clave externa es:

ALTER TABLE core_email_queue_recipients ADD FOREIGN KEY(message_id) REFERENCES core_email_queue(message_id) ON DELETE CASCADE;
Mediante el uso de esta nueva llave foranea, registros huérfanos no quedará sobre la mesa de core_email_queue_recipients cuando limpie la tabla de core_email_queue , y no hay repetidos mensajes a destinatarios equivocados se enviará en el futuro.

Pero no sé donde tengo que escribir esos comando DELETE y todo lo que sigue, ya que no lo dicen. Puede ser en la ruta app/code/core/Mage/Core/etc/config.xml? Alguién sabría algo? Gracias
 

Adjuntos

Última edición:

Perol

Nuevo usuario
Hola Xixo,
Son sentencias que se han de ejecutar en la base de datos, tienes que buscar las tablas que te indican y ejecutar ahí la sentencias. Antes de hacer nada BACKUP obligatorio de la base de datos.

No se si te servirá la solución para limpiar pero el problema una vez corregido es encontrar el porqué ha ocurrido esto y si sigue produciéndose.

Un saludo,
 

XIXO123

Nuevo usuario
Gracias por la respuesta. Desgraciadamente me quedo igual, no sabría como acceder a la base de datos y ejecutar esos comandos. Actualmente utilizo VestaCP para administrar el hosting web y voy a investigar si es posible meterle mano por ahí a la base de datos.
 

Perol

Nuevo usuario
Hola Xixo,
Mi consejo es que si no sabes de base de datos no toques nada ya que s haces algo que no va bien y después no vas a poder corregir, te vas a encontrar en una posición complicada.

Un saludo,
 

evoratec

Nuevo usuario
Lo que yo he hecho para evitar diversos problemas y debido a que no es una tienda con mucha carga de emails, hemos deshabilitado la cola de mensajes y enviamos los mensajes directamente. Esto hay que hacerlo en código
 
Estado
Cerrado para nuevas respuestas
Arriba