vanchelo / phalcon-mailer
Phalcon Mailer Service
Installs: 2 321
Dependents: 0
Suggesters: 0
Security: 0
Stars: 39
Watchers: 10
Forks: 18
Open Issues: 3
Requires
- php: >=5.4.0
- jeremeamia/superclosure: ~1.0.1
- swiftmailer/swiftmailer: ~5.3
Requires (Dev)
- phalcon/devtools: ~2.0
This package is not auto-updated.
Last update: 2024-12-07 16:35:18 UTC
README
english | русский
Phalcon Mailer
Удобная библиотека для отправки Вашей почты в Phalcon 2.0.
Код заимствован из Laravel 4 и адаптирован под Phalcon.
Установка
C помощью composer
:
Добавить в файл composer.json
в секцию require
следующую строку:
"vanchelo/phalcon-mailer": "~2.0"
или выполнить в командной строке:
composer require vanchelo/phalcon-mailer
Должно получится примерно так:
{ "require": { "vanchelo/phalcon-mailer": "~2.0" } }
После этого выполните в терминале команду:
composer update
Инициализация сервиса
/** * Register Mailer Service */ $this->di['mailer'] = function() { $service = new MailerService(); return $service->mailer(); };
или с передачей параметров на этапе инициализации сервиса
/** * Register Mailer Service */ $this->di['mailer'] = function() { $service = new MailerService([ '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', // Путь используемый для поиска шаблонов писем 'viewsDir' => __DIR__ . '/../app/views/', // optional ]); return $service->mailer(); };
Отправка письма
Пример для контроллера, но работать будет не только в контроллерах
$this->mailer->send('emails/xxx', [ 'test' => 'test' // Переменные для передачи в шаблон ], function($message) { $message->to('some_email@email.com'); $message->subject('Test Email'); });
где, emails/xxx - шаблон письма расположенный в каталоге views, (app/views/emails/xxx.[phtml|volt])
По умолчанию, если в контейнере зарегистрирован сервис view
библиотека будет использовать его, соответственно можно использовать любой удобный доступный шаблонизатор (phtml, volt и т.д.)
Настройки
Настройки по умолчанию необходимо прописать в конфигурационном файле вашего приложения config/config.php
<?php return new \Phalcon\Config([ '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', // Путь используемый для поиска шаблонов писем 'viewsDir' => __DIR__ . '/../app/views/', // optional ], ]);
Если будет необходимость, настройки почты можно вынести в отдельный конфигурационный файл
UPD. Реализована возможность использования очередей для отложенной отправки почты через реализованный в Phalcon сервис очередей Beanstalk
Очереди (отложенная отправка почты)
Для отложенной отправки почты у вас должен быть зарегистрирован сервис 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