與Magento的1.9.1開始的電子郵件沒有被結帳時直接發送,而是正在排隊。該隊列正在通過Magento cronjob進行處理。
Magento cronjobs沒有問題。該命令是正確的。電子郵件發送成功即使郵件的收件人不正確。
如何Magento的確定郵件的接收者?從具有與表core_email_queue
的關係表core_email_queue_recipients
。
MySQL支持外鍵,這讓跨表和外鍵約束,這有助於保持該展開的數據是一致的,你交叉引用相關數據。
Magento添加一個CONSTRAINT和FOREIGN KEY message_id
到表core_email_queue_recipients
。
ALTER TABLE core_email_queue_recipients
ADD CONSTRAINT FK_6F4948F3ABF97DE12127EF14B140802A
外鍵(message_id
)參考文獻core_email_queue
(message_id
)ON DELETE CASCADE ON UPDATE CASCADE;
FOREIGN KEY message_id
將參考表core_email_queue
的message_id
。兩個表現在相互綁定。作爲一個孩子,表core_email_queue
將是父母和core_email_queue_recipients
。如果我從core_email_queue
刪除一行message_id
= 1。每個自message_id
= 1的行還將自動從core_email_queue_recipients
刪除。
那麼,真正的問題是什麼?我登錄到MySQL數據庫服務器。我發現表core_email_queue_recipients
沒有FOREIGN KEY CONSTRAINT。我不知道爲什麼。也許,他或他的開發人員曾經刪除過這張桌子。所以,每次cronjobs清理電子郵件隊列。 MySQL服務器只刪除郵件隊列。被刪除隊列的電子郵件收件人將被忽略。表core_email_queue_recipients
的數據完整性現在已被破壞。