Индивидуальная отправка электронной почты в настраиваемом модуле 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>

для загрузки шаблона электронной почты