以编程方式标记已发送的送货邮件

时间:2012-01-24 17:27:43

标签: email magento loops magento-1.4

我已经设置了一个观察员,只要将一个跟踪号码添加到货件中就会发送一封电子邮件,但我需要能够在管理员中显示电子邮件已发送的一些信息,而不是显示“发送邮件不会发送。“

这是我目前使用的代码。它有一个问题,因为它最终会发送大量的电子邮件,好像它是一些陷入循环的东西。我真的可以帮助弄清楚为什么会发生这种情况。

class WR_TrackingEmail_Model_Observer
{
    public function sendTrackEmail($observer)
    {
        $track = $observer->getEvent()->getTrack();
        $shipment = $track->getShipment(true);
        $shipment->sendEmail();
        $shipment->setEmailSent(true);

        $saveTransaction = Mage::getModel('core/resource_transaction')
                       ->addObject($shipment)
                       ->addObject($shipment->getOrder())
                       ->save();
    }
}

1 个答案:

答案 0 :(得分:1)

您正在货件对象上调用save()。货件类具有_afterSave()功能,可触发对轨道对象的保存。由于您正在为track_save_after创建一个观察者,因此很可能会导致循环。