Phalcon Mailer Service - Сервис для отправки почты
Сервис для отправки почты для Phalcon используя Swift Mailer.
Код заимствован из Laravel 4 и адаптирован под Phalcon PHP.
Реализована возможность использования очередей для отложенной отправки почты через реализованный в Phalcon сервис очередей Beanstalk.
Работа с очередями в Phalcon docs.phalconphp.com/ru/latest/reference/queue.html
Важно! Версия PHP должна быть не ниже 5.4.
Установка через composer
Что такое composer
Для установки через composer необходимо добавить в файл composer.json
в секцию require
следующую строку:
"vanchelo/phalcon-mailer": "dev-master"
Должно получиться примерно так:
"require": { "vanchelo/phalcon-mailer": "dev-master" }
После этого открываем терминал и запускаем команду composer update
Инициализация сервиса
Лучшим вариантом будет прописать этот код в вашем файле сервисов, обычно это app/config/services.php
/** * Register Mailer Service */ $di['mailer'] = function() { $service = new MailerService(); return $service->mailer(); };
Отправка письма
Пример для контроллера, но работать будет не только в контроллерах
$this->mailer->send('emails/hello_world', [ 'test' => 'test' // Переменные для передачи в шаблон ], function($message) { // По умолчанию адрес отправителя указывается в настройках $message->from('vanchelo@artdevue.com'); // Адрес отправителя. Эту строку можно удалить или закоментировать $message->to('for_user@domain.com'); // Адрес получателя $message->subject('Привет, Мир'); // Тема письма $message->attach('/absolute/path/to/attachment'); // Добавить вложение });
где, emails/hello_world - шаблон письма расположенный в каталоге views, (app/views/emails/hello_world.[phtml|volt]
)
По умолчанию, если в контейнере зарегистрирован сервис view библиотека будет использовать его, соответственно можно использовать любой удобный доступный шаблонизатор (phtml, volt и т.д.)
Добавить вложение к письму
Прикрепить файл
/** * $pathToFile - путь к прикрепляемому файлу (вложению) * $as - отображаемое имя в письме * $mime - mime тип файла */ $message->attach($pathToFile, ['as' => $display, 'mime' => $mime]);
Более подробно можно почитать здесь laravel.com/docs/mail
Настройки
Настройки по умолчанию необходимо прописать в конфигурационном файле вашего приложения config/config.php
return new \Phalcon\Config([ 'application' => array( // Путь используемый для поиска шаблонов писем 'viewsDir' => __DIR__ . '/../app/views/', /* ... */ ), 'mail' => [ 'driver' => 'smtp', // mail, sendmail, smtp 'host' => 'smtp.email.com', 'port' => 587, 'from' => [ 'address' => 'no-reply@my-domain.com', 'name' => 'My Cool Company' ], 'encryption' => 'tls', 'username' => 'no-reply@my-domain.com', 'password' => 'some-strong-password', 'sendmail' => '/usr/sbin/sendmail -bs', ], ]);
Если будет необходимость, настройки почты можно вынести в отдельный конфигурационный файл.
Код библиотеки на GitHub phalcon-mailer
Очереди (отложенная отправка почты)
Для отложенной отправки почты у вас должен быть зарегистрирован сервис queue в контейнере, например:
use Phalcon\Queue\Beanstalk; $this->di['queue'] = function () { $queue = new Beanstalk(); $queue->connect(); // ? return $queue; };
Пример отложенной отправки почты
$this->mailer->queue('emails/xxx', [ 'test' => 'test' // Переменные для передачи в шаблон ], function($message) { $message->to('some_email@email.com'); $message->subject('Test Email'); })
Вся отложенная почта помещается в очередь mailer
(не знаю насколько это правильно)
Пример обработчика очереди https://github.com/vanchelo/phalcon-mailer/blob/master/example/mailer.php
Комментариев нет