Magento на русском

Новости, обмен опытом, база знаний для разработчиков.

Как отправить письмо в Magento?

by @ 13:20 on 27.07.2009. Tags: ,
Filed under В помощь, Конфиг, Письма, Примеры

Часто возникает необходимость отправлять письма автоматом. Это могут быть рассылки, уведомления и т.п.

Горе – программисты  начинают выдумывать несуразицу, хардкодить параметры и делать много чего еще не хорошего.

Как же это сделать правильно и красиво?

Очень просто.


Для начала нужно создать шаблон, это можно сделать руками, но лучще через 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-статьи:

  1. Zend_Mail – отправка почты через GMail SMTP сервер
  2. Как показать подкатегории на страничке категории
  3. Создание Shipping Method Module – часть 1, заглушка
  4. Простой пример кода начинающим разработчикам

The URI to TrackBack this entry is: http://magento.verych.ru/2009/07/%d0%ba%d0%b0%d0%ba-%d0%be%d1%82%d0%bf%d1%80%d0%b0%d0%b2%d0%b8%d1%82%d1%8c-%d0%bf%d0%b8%d1%81%d1%8c%d0%bc%d0%be-%d0%b2-magento/trackback/

Комментариев - 3 для “Как отправить письмо в Magento?”

  1. Антон:

    А как узнать-то этот айдишник шаблона?

  2. Зайти в админку в раздел email templates, и там посмотреть

  3. Templar:

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

Оставить комментарий

© 2009-2012 Magento по-русски 99% авторских статей