web-dev-qa-db-ja.com

magentoカスタムモジュールでのカスタムメール送信

注文完了から7日後にメールを送信するモジュールに取り組んでいます。メールの送信に行き詰まっています。管理者のトランザクションメールドロップダウンでメールテンプレートを確認できます。しかし、メールは送信されていません。

メールテンプレートを含めるための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();
    }  

なぜ機能しないのかわかりません。

13
murtza gondal
 $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;
 }

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で指定したもの

4
Slimshadddyyy

ここで間違えたと思います。

$emailTemplate = Mage::getModel('core/email_template')->loadDefault('coeus_recurring_order_email');

これを試して

$emailTemplate = Mage::getModel('core/email_template')
            ->loadDefault('recurring_order_email_template');

電子メールテンプレートをロードするには、config.xmlで指定したタグ名を指定する必要があります

eg:コード内

使用する

<recurring_order_email_template>

メールテンプレートを読み込む

1