【发布时间】:2012-01-24 17:27:43
【问题描述】:
我已经设置了一个观察员,以便在将跟踪号添加到货件后立即发送电子邮件,但我需要能够在管理员中显示电子邮件已发送,而不是显示“发货电子邮件未发送。”
这是我目前使用的代码。它存在一个问题,因为它最终会发送大量电子邮件,就好像它陷入了循环一样。我真的可以使用一些帮助来弄清楚为什么会发生这种情况。
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();
}
}
【问题讨论】:
-
你是怎么调用
sendTrackEmail函数的?它在循环内吗?循环是否正确退出? -
这是一个在 sales_order_shipment_track_save_after 事件上运行的观察者。我上面提供的代码是整个模块中唯一的代码,除了配置文件。我假设在代码的最后 4 行中发生了某种循环,因为当我在没有这 4 行的情况下运行代码时,只发送一封电子邮件,但数据库中未设置“已发送电子邮件”标志。
标签: email magento loops magento-1.4