Files
yii2-usuario/src/User/Service/MailService.php
2017-11-12 22:01:28 +01:00

90 lines
2.2 KiB
PHP

<?php
/*
* This file is part of the 2amigos/yii2-usuario project.
*
* (c) 2amigOS! <http://2amigos.us/>
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
namespace Da\User\Service;
use Da\User\Contracts\ServiceInterface;
use Yii;
use yii\mail\BaseMailer;
use yii\mail\MailerInterface;
class MailService implements ServiceInterface
{
protected $viewPath = '@Da/User/resources/views/mail';
protected $type;
protected $from;
protected $to;
protected $subject;
protected $view;
protected $params = [];
protected $mailer;
/**
* MailService constructor.
*
* @param string $type the mailer type
* @param string $from from email account
* @param string $to to email account
* @param string $subject the email subject
* @param string $view the view to render mail
* @param array $params view parameters
* @param BaseMailer|MailerInterface $mailer mailer interface
*/
public function __construct($type, $from, $to, $subject, $view, array $params, MailerInterface $mailer)
{
$this->type = $type;
$this->from = $from;
$this->to = $to;
$this->subject = $subject;
$this->view = $view;
$this->params = $params;
$this->mailer = $mailer;
$this->mailer->setViewPath($this->viewPath);
$this->mailer->getView()->theme = Yii::$app->view->theme;
}
/**
* @param $name
* @param $value
*
* @return $this
*/
public function setViewParam($name, $value)
{
$this->params[$name] = $value;
return $this;
}
/**
* gets mailer type
* @return string
*/
public function getType()
{
return $this->type;
}
/**
* @return bool
*/
public function run()
{
return $this->mailer
->compose(['html' => $this->view, 'text' => "text/{$this->view}"], $this->params)
->setFrom($this->from)
->setTo($this->to)
->setSubject($this->subject)
->send();
}
}