在magento建设的网店中,有时客户创建账户后需要一些鼓励来拍下他们的第一个宝贝,这样的事情原因有很多,例如,你的客户忘记了你的网站的书签,因此他们想再次找到你的网站就很困难。在本文中我将介绍一个分厂好的方法,着眼于保持客户订单数量和给客户发送第一封订单邮件提醒,你可以用我们的免费插件来实现Alwayly_OrderReminder
magento 订单提醒插件介绍
至于Alwayly_OrderReminder插件的源码,可以去magento插件中心下载,这里我只通过一些代码介绍他的功能。Alwayly_OrderReminder插件的特点有:
- 当客户注册之后,隔了数天还没有下单,这是可以通过这个magento插件发送邮件提醒客户下单
- 可以配置发送邮件的最多数量,当发送最后一件邮件后可以采取一些措施(移动到不同的客户群或删除帐户)
- 通过magento的事务性邮件模板功能可以配置定期的和最后一封邮件的模板
- 配置magento订单提醒邮件的发送者,以及作为邮件副本或抄送发送给电子邮箱地址
以下是配置选项提供的屏幕截图,z在你的magento后台System -> Configuration -> Sales Emails -> Order Reminders里面

配置逻辑
在本节中,我将介绍一些代码和在magento插件Alwayly_OrderReminder背后一些基本的逻辑
Inchoo_OrderReminder_Model_Observer::processOrderReminders()方法是通过cron daily来出发,通过配置选项来处理客户,下面是config.xml文件的代码段用于此目的:
<config>
<crontab>
<jobs>
<inchoo_orderreminder>
<!-- Daily at 1 am -->
<schedule><cron_expr>0 1 * * *</cron_expr></schedule>
<run><model>inchoo_orderreminder/observer::processOrderReminders</model></run>
</inchoo_orderreminder>
</jobs>
</crontab>
</config>
触发后
下面是发送电子邮件的代码
/**
* Send transactional emails.
*
* @param Varien_Object $customer Customer object
* @param int $reminderLimit Number of days for last reminder
* @param int $reminderKey Number of days since customer account was created
* @param string $template Email template
*/
protected function _sendOrderReminderEmail(Varien_Object $customer, $reminderLimit, $reminderKey, $template)
{
$this->_log('Preparing email...');
// Get necessary vars
$copyTo = $this->_getStoreConfigCopyTo();
$copyMethod = $this->_getStoreConfigCopyMethod();
$storeId = Mage::app()->getStore()->getId();
// Uses code from Mage_Sales_Model_Order::sendNewOrderEmail()
$mailer = Mage::getModel('core/email_template_mailer');
$emailInfo = Mage::getModel('core/email_info');
$emailInfo->addTo($customer->getEmail(), $customer->getName());
if ($copyTo && $copyMethod == 'bcc') {
// Add bcc to customer email
foreach ($copyTo as $email) {
$emailInfo->addBcc($email);
$this->_log(sprintf('Add %s to Bcc.', $email));
}
}
$mailer->addEmailInfo($emailInfo);
// Email copies are sent as separated emails if their copy method is 'copy'
if ($copyTo && $copyMethod == 'copy') {
foreach ($copyTo as $email) {
$emailInfo = Mage::getModel('core/email_info');
$emailInfo->addTo($email);
$mailer->addEmailInfo($emailInfo);
$this->_log(sprintf('Will send a copy to %s.', $email));
}
}
// Set all required params and send emails
$mailer->setSender($this->_getStoreConfigIdentity(), $storeId);
$mailer->setStoreId($storeId);
$mailer->setTemplateId($template);
$mailer->setTemplateParams(
array(
// Customer object
'customer' => $customer,
// Reminder for number of days
'reminder_days' => $reminderKey,
// Last reminder number of days
'reminder_limit' => $reminderLimit
)
);
// Send
$mailer->send();
$this->_log('Email sent.');
}
接下来你可以学习下,也可以直接安装这个magento插件来达到你想要的效果

