Использовать компонент Swiftmailer; это самый простой компонент для использования.
http://bakery.cakephp.org/articles/mhuggins/2008/06/11/improved-swiftmailer-component
Есть некоторые изменения, которые вам нужно сделать, используя CakePHP 2.0 и выше.
CakePHP 2.0 предоставляет каталог просмотра «Электронная почта», который используется для хранения всех шаблонов электронной почты.
Изменения в компоненте:
- Изменить все
var
декларации на public
Изменить public $layout = 'Emails';
на public $viewPath = '/Emails';
Изменить путь рендеринга в _getBodyText
:
$body = $this->controller->render($this->viewPath . DS . 'text' . DS . $view, $this->layout . DS . 'text'.DS.'default');
- Изменить путь рендеринга в
_getBodyHtml
:
$body = $this->controller->render($this->viewPath . DS . 'html' . DS . $view, $this->layout . DS . 'html'.DS.'default');
- Закомментируйте строки:
$bodyText = $this->_getBodyText($view);
$message->setBody($bodyText, "text/plain");
Компонент Swiftmailer отправляет пустое электронное письмо, если вы активировали HTML и TEXT. Он читает из обоих видов электронной почты и добавляет текст для текста. Вот причина, чтобы прокомментировать эти две строки, если вы хотите отправлять html-письма.
Вторая причина: если оба активированы, и у вас есть содержимое в обоих email.html.ctp
и email.text.ctp
файлах, это создает проблему с заголовком в том, что в электронных письмах отображается только текстовый формат (в действительности оба формата присутствуют в заголовок, но он подавляет часть html и показывает часть текста).