Часто возникает необходимость отправлять письма автоматом. Это могут быть рассылки, уведомления и т.п.
Горе – программисты начинают выдумывать несуразицу, хардкодить параметры и делать много чего еще не хорошего.
Как же это сделать правильно и красиво?
Очень просто.
Для начала нужно создать шаблон, это можно сделать руками, но лучще через XML конфиги вашего модуля. Итак, создаем phtml шаблон и помещаем его туда, где он должен находиться app/locale/язык/template/email/…
Прописываем в config.xml что используем его (примерно так):
</global>
<template>
<email>
<newsletter_subscription_un_email_template translate="label" module="newsletter">
<label>Newsletter unsubscription success</label>
<file>newsletter_unsub_success.html</file>
<type>html</type>
</newsletter_subscription_un_email_template>
</email>
</template>
</global>
Делаем в админке (или не делаем) секцию, в которой можно выбрать шаблон для письма. Я не буду расписывать сейчас как это делается… это отдельная большая тема.
Вообщем всё в итоге приходит тому что вам прийдется написать следующую функцию, которая и отправляет письмо.
protected function send($data)
{
$currentTemplateEmailId = 31; //заглушка
$recipient = Mage::getStoreConfig('contacts/email/recipient_email');
$translate = Mage::getSingleton('core/translate');
$translate->setTranslateInline(false);
$subject = Mage::getModel('core/email_template')->load($currentTemplateEmailId)->getTemplateSubject();
Mage::getModel('core/email_template')
->setDesignConfig(array('area' => 'frontend', 'store' => Mage::app()->getStore()->getId()))
->sendTransactional(
$currentTemplateEmailId,
array('name' => __($subject).' by '.$data['your_first_name'].' '.$data['your_last_name'],'email' => $data['email']),
$recipient,
Mage::getStoreConfig('trans_email/ident_general/name'),
$data
);
$translate->setTranslateInline(true);
}
$currentTemplateEmailId – должен быть ID вашего шаблона. В данном примере это единственный случай хардкода. Именно сюда надо было бы подставить сохраненное в админке значение айдишника шаблона, если бы вы реализовали этот функционал.
Похожие Magento-статьи:













А как узнать-то этот айдишник шаблона?
Зайти в админку в раздел email templates, и там посмотреть
Еще, из данного примера, айдишником является ‘newsletter_subscription_un_email_template’. Функция sendTransactional(), в качестве 1-го параметра так же может принимать и строку.