8 июль 2013
Для рассылки произвольных 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('[email protected]','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'));
Тестируем, радуемся, делаем дальше :)