Magento订单电子邮件不是随机发送的

时间:2016-12-14 09:45:38

标签: magento-1.9

我遇到的问题是,订单电子邮件不会同时发送,也会跳过一些电子邮件。我确实检查了core_email_queue和core_email_queue_recipients,发现第一个表中有10条记录,对于那些订单,客户和管理员没有收到任何电子邮件。我如何处理这个队列电子邮件,我该怎么做才能确保将来不会发生这种情况? 我确实检查了cron及其工作正常并设置为每5分钟运行一次。

SMTP Pro免费扩展是否会替换此默认Magento电子邮件队列流程并解决问题?

由于

2 个答案:

答案 0 :(得分:0)

在Magento 1.9之后,订单确认电子邮件不再在结账时发送,而是与cron一起发送。确保您的Cron正常工作(您可以查看cron日志/var/log/cron)。

还要确保Magento cron每五分钟运行一次。您应该在Crontab(在您的服务器中)中看到类似的内容:

*/5 * * * * /public_html/cron.sh

此扩展程序可帮助您管理Magento中的cron作业:AOE Scheduler

只需在order.php (public_html/app/code/core/Mage/Sales/Model/Order.php)做一个小改动(别忘了覆盖这个)

$mailer->setQueue($emailQueue)->send();

$mailer->send();

另一种解决方案:

go to System -> Configuration -> ASCHRODER EXTENSIONS -> SMTP -> Queue Configuration -> Queue Usage -> Never 

答案 1 :(得分:0)

从Magento 1.9.1开始,电子邮件不会在结账时直接发送,而是排队等候。该队列正在通过Magento cronjob进行处理。

Magento cronjobs没有问题。命令是正确的。电邮发送成功。即使邮件的接收者不正确。

Magento如何确定邮件的接收者?来自与表core_email_queue_recipients有关系的表core_email_queue

MySQL支持外键,它允许您跨表交叉引用相关数据,以及外键约束,这有助于保持这种展开数据的一致性。

Magento向表message_id添加CONSTRAINT和FOREIGN KEY core_email_queue_recipients

ALTER TABLE core_email_queue_recipients  添加约束FK_6F4948F3ABF97DE12127EF14B140802A FOREIGN KEY(message_id)引用core_email_queuemessage_id)ON DELETE CASCADE ON UPDATE CASCADE;

FOREIGN KEY message_id将引用表message_id中的core_email_queue。这两个表现在彼此绑定。表格core_email_queue将是父级,core_email_queue_recipients将作为子级。如果我从message_id删除core_email_queue = 1的行。来自message_id的{​​{1}} = 1的每一行也将被MySQL自动删除。

那么,真正的问题是什么?我登录MySQL数据库服务器。我发现表core_email_queue_recipients没有FOREIGN KEY CONSTRAINT。我不知道为什么。也许,他或他的开发人员删除了表。所以,每次cronjobs清理电子邮件队列。 MySQL服务器只删除电子邮件队列。已删除队列的电子邮件收件人将被忽略。表core_email_queue_recipients的数据完整性现已破裂。