Magento订单邮件发送给多个收件人的问题

Magento1.9后订单邮件是通过计划任务cron job 发送,待发的邮件都保存到了core_email_queue表里,收件人则保存到了core_email_queue_recipients这个表。 通过计划任务定时发送邮件 和清理已经发送了的邮件。清理的时候是删除了core_email_queue表里的已发送邮件,通过外键约束同时把对应的core_email_queue_recipients表里的收件人 也清理了。 然,有些情况下会碰到Magento订单邮件发送给多个收件人的问题。这个就是外键约束丢失了。

修复代码

注意:这里直接清空了这2个表,要保留未发送邮件的需要自己清理错误的收件人,再修复表即可。

SET FOREIGN_KEY_CHECKS=0;
TRUNCATE `core_email_queue`;
TRUNCATE `core_email_queue_recipients`;
#约束 同时删除,避免重复发错邮件
ALTER TABLE core_email_queue_recipients ADD FOREIGN KEY(message_id) REFERENCES core_email_queue(message_id) ON DELETE CASCADE;
SET FOREIGN_KEY_CHECKS=1;