Индивидуальная отправка электронной почты в настраиваемом модуле magento
Я работаю над модулем, который отправит электронное письмо после 7 дней завершения заказа. Я застрял в отправке писем. Я вижу, что шаблон электронной почты в транзакционных письмах выпадал в admin. Но письмо не отправляется.
Вот моя часть confix.xml для включения шаблона электронной почты.
<template>
<email>
<recurring_order_email_template translate="label">
<label>Recurring order email</label>
<file>coeus_recurring_order_email.html</file>
<type>html</type>
</recurring_order_email_template>
</email>
</template>
и это то, как я отправляю электронное письмо в действие контроллера
$emailTemplate = Mage::getModel('core/email_template')
->loadDefault('coeus_recurring_order_email');
$emailTemplateVariables = array();
$emailTemplateVariables['var1'] = 'var1 value';
$emailTemplateVariables['var2'] = 'var 2 value';
$emailTemplateVariables['var3'] = 'var 3 value';
$emailTemplate->getProcessedTemplate($emailTemplateVariables);
$emailTemplate->setSenderName('sender name');
$emailTemplate->setSenderEmail('[email protected]');
try {
$emailTemplate->send('[email protected]', 'bla bla',$emailTemplateVariables);
} catch (Exception $e) {
echo $e->getMessage();
}
Я не знаю, почему он не работает.
Ответы
Ответ 1
$emailTemplate = Mage::getModel('core/email_template')->loadDefault('recurring_order_email_template');
//Getting the Store E-Mail Sender Name.
$senderName = Mage::getStoreConfig('trans_email/ident_general/name');
//Getting the Store General E-Mail.
$senderEmail = Mage::getStoreConfig('trans_email/ident_general/email');
//Variables for Confirmation Mail.
$emailTemplateVariables = array();
$emailTemplateVariables['name'] = $customerName;
$emailTemplateVariables['email'] = $customerEmail;
//Appending the Custom Variables to Template.
$processedTemplate = $emailTemplate->getProcessedTemplate($emailTemplateVariables);
//Sending E-Mail to Customers.
$mail = Mage::getModel('core/email')
->setToName($senderName)
->setToEmail($customerEmail)
->setBody($processedTemplate)
->setSubject('Subject :')
->setFromEmail($senderEmail)
->setFromName($senderName)
->setType('html');
try{
//Confimation E-Mail Send
$mail->send();
}
catch(Exception $error)
{
Mage::getSingleton('core/session')->addError($error->getMessage());
return false;
}
Ответ 2
Измените свой код etc/config.xml ниже:
<template>
<email>
<recurring_order_email_template>
<label>Recurring order email</label>
<file>coeus_recurring_order_email.html</file>
<type>html</type>
</recurring_order_email_template>
</email>
</template>
Измените код вашего контроллера ниже:
$emailTemplate = Mage::getModel('core/email_template')
->loadDefault('recurring_order_email_template');
$emailTemplateVariables = array();
$emailTemplateVariables['var1'] = 'var1 value';
$emailTemplateVariables['var2'] = 'var 2 value';
$emailTemplateVariables['var3'] = 'var 3 value';
$emailTemplate->getProcessedTemplate($emailTemplateVariables);
$emailTemplate->setSenderName('sender name');
$emailTemplate->setSenderEmail('[email protected]');
try {
$emailTemplate->send($recipientEmail, $senderName, $emailTemplateVariables);
} catch (Exception $e) {
echo $e->getMessage();
}
Измените свои $recipientEmail, $senderName и $emailTemplateVariables в соответствии с вашими потребностями.
Чтобы загрузить шаблон электронной почты, вы должны указать имя тега после
<template>
<email>
</email>
</template>
который вы указали в файле config.xml
Ответ 3
Я думаю, что вы допустили ошибку здесь.
$emailTemplate = Mage::getModel('core/email_template')->loadDefault('coeus_recurring_order_email');
попробуйте это
$emailTemplate = Mage::getModel('core/email_template')
->loadDefault('recurring_order_email_template');
чтобы загрузить шаблон электронной почты, вы должны указать имя тега, которое вы указали в файле config.xml
например: в вашем коде
использовать
<recurring_order_email_template>
для загрузки шаблона электронной почты