Все части, отвечающие за отправку E-mail вынесены в отдельный компонент

This commit is contained in:
ErickSkrauch
2017-04-21 01:41:43 +03:00
parent 0e2aff91d0
commit c0780736ca
17 changed files with 427 additions and 126 deletions

View File

@@ -1,6 +1,7 @@
<?php
namespace api\models\profile\ChangeEmail;
use api\emails\EmailHelper;
use api\models\base\ApiForm;
use api\validators\PasswordRequiredValidator;
use common\helpers\Error as E;
@@ -10,7 +11,6 @@ use common\models\EmailActivation;
use Yii;
use yii\base\ErrorException;
use yii\base\Exception;
use yii\base\InvalidConfigException;
class InitStateForm extends ApiForm {
@@ -55,7 +55,8 @@ class InitStateForm extends ApiForm {
try {
$this->removeOldCode();
$activation = $this->createCode();
$this->sendCode($activation);
EmailHelper::changeEmailConfirmCurrent($activation);
$transaction->commit();
} catch (Exception $e) {
@@ -93,29 +94,6 @@ class InitStateForm extends ApiForm {
$emailActivation->delete();
}
public function sendCode(EmailActivation $code) {
$mailer = Yii::$app->mailer;
$fromEmail = Yii::$app->params['fromEmail'];
if (!$fromEmail) {
throw new InvalidConfigException('Please specify fromEmail app in app params');
}
$acceptor = $code->account;
$message = $mailer->compose([
'html' => '@app/mails/current-email-confirmation-html',
'text' => '@app/mails/current-email-confirmation-text',
], [
'key' => $code->key,
])
->setTo([$acceptor->email => $acceptor->username])
->setFrom([$fromEmail => 'Ely.by Accounts'])
->setSubject('Ely.by Account change E-mail confirmation');
if (!$message->send()) {
throw new ErrorException('Unable send email with activation code.');
}
}
/**
* Возвращает E-mail активацию, которая использовалась внутри процесса для перехода на следующий шаг.
* Метод предназначен для проверки, не слишком ли часто отправляются письма о смене E-mail.