Для рассылки произвольных e-mail клиентам по крону нужно написать код. Однако бывают нестандартные глюки при отправке.

Используем следующий код:



public function sendfollowup($order) {
        $emailTemplate=Mage::getModel('core/email_template')
                ->loadDefault('followup');
        $emailTemplateVariables=array();
        $emailTemplateVariables['FrontendName']=Mage::getStoreConfig('general/store_information/name');
        $emailTemplateVariables['increment_id']=$order->getIncrementId();
        $emailTemplateVariables['CustomerName']=$order->getShippingAddress()->getName();
        $emailTemplateVariables['getCreatedAt']=$order->getCreatedAt();
        $emailTemplateVariables['order']=$order;
        $processedTemplate=$emailTemplate->getProcessedTemplate($emailTemplateVariables);
        try {
            $emailTemplate->send('xxxx@xxxx.ru','Danila Tarasov',$emailTemplateVariables);
        } catch (Exception $e) {
            print_r($e);
        }
    }


При разработке не забываем прописать xml в секцию global:



<template> <email> <followup translate="label" module="email"> <label>Follow up custom email module</label> <file>followup.html</file> <type>html</type> </followup> </email> </template>


Добавляем в /app/locale/en_US/template/email/followup.html произвольный текст и тестируем отправку.

Тестируем. Если всё отправилось - то замечательно. Если нет - то советую проверить, заполнены ли все контактные поля в настройках магазина.

Если заполнено, но не отправляется, то смотрим exception. Он ругается на функцию isValidForSend(). Смотрим ее в app/code/core/Mage/Core/Model/Email/Template.php (строка 296)



public function isValidForSend()
    {
        return !Mage::getStoreConfigFlag('system/smtp/disable')
            && $this->getSenderName()
            && $this->getSenderEmail()
            && $this->getTemplateSubject();
    }


На некоторых установках magento бывает глюк с функциями getSenderName() и getSenderEmail(), которые ничего не возвращают, хотя в настройках всё вписано корректно.

Не печалимся, копируем файл в app/code/local/Mage/Core/Model/Email/Template.php и правим функции на:



 public function isValidForSend()
    {
        return !Mage::getStoreConfigFlag('system/smtp/disable')
            && Mage::getStoreConfig('trans_email/ident_general/name')
            && Mage::getStoreConfig('trans_email/ident_general/email')
            && $this->getTemplateSubject();
    }


И в public function send (сточка 451) заменяем на :



$mail->setFrom(Mage::getStoreConfig('trans_email/ident_general/email'), Mage::getStoreConfig('trans_email/ident_general/name'));


Тестируем, радуемся, делаем дальше :)