Phalcon Mailer
Удобная библиотека для отправки Вашей почты в Phalcon 2.0., (*1)
Код заимствован из Laravel 4 и адаптирован под Phalcon., (*2)
Установка
C помощью composer
:, (*3)
Добавить в файл composer.json
в секцию require
следующую строку:, (*4)
"slowprog/phalcon-mailer": "~2.0"
или выполнить в командной строке:, (*5)
composer require slowprog/phalcon-mailer
Должно получится примерно так:, (*6)
{
"require": {
"slowprog/phalcon-mailer": "~2.0"
}
}
После этого выполните в терминале команду:, (*7)
composer update
Инициализация сервиса
/**
* Register Mailer Service
*/
$this->di['mailer'] = function() {
$service = new MailerService();
return $service->mailer();
};
или с передачей параметров на этапе инициализации сервиса, (*8)
/**
* Register Mailer Service
*/
$this->di['mailer'] = function() {
$service = new MailerService([
'driver' => 'smtp', // mail, sendmail, smtp
'host' => 'smtp.email.com',
'port' => 587,
'from' => [
'email' => '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();
};
Отправка письма
Пример для контроллера, но работать будет не только в контроллерах, (*9)
$this->mailer->sendView('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]), (*10)
По умолчанию, если в контейнере зарегистрирован сервис view
библиотека будет использовать его, соответственно можно использовать любой удобный доступный шаблонизатор (phtml, volt и т.д.), (*11)
Настройки
Настройки по умолчанию необходимо прописать в конфигурационном файле вашего приложения config/config.php, (*12)
<?php
return new \Phalcon\Config([
'mail' => [
'driver' => 'smtp', // mail, sendmail, smtp
'host' => 'smtp.email.com',
'port' => 587,
'from' => [
'email' => '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
],
]);
Если будет необходимость, настройки почты можно вынести в отдельный конфигурационный файл, (*13)
UPD. Реализована возможность использования очередей для отложенной отправки почты через реализованный в Phalcon сервис очередей Beanstalk, (*14)
Очереди (отложенная отправка почты)
Для отложенной отправки почты у вас должен быть зарегистрирован сервис queue
в контейнере, например:, (*15)
use Phalcon\Queue\Beanstalk;
$this->di['queue'] = function () {
$queue = new Beanstalk();
$queue->connect(); // ?
return $queue;
};
Пример отложенной отправки почты, (*16)
$this->mailer->queueView('emails/xxx', [
'test' => 'test' // Переменные для передачи в шаблон
], function($message) {
$message->to('some_email@email.com');
$message->subject('Test Email');
});
Вся отложенная почта помещается в очередь mailer
(не знаю насколько это правильно), (*17)
Пример обработчика очереди https://github.com/slowprog/phalcon-mailer/blob/master/example/mailer.php, (*18)