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;
来源:https://www.mageoo.com/magento-new-order-email-send-to-orther-customer/