/** * @inheritdoc */ public function init() { parent::init(); Event::on(BaseMailer::className(), BaseMailer::EVENT_AFTER_SEND, function ($event) { AuditMail::record($event); }); }
public function init() { parent::init(); Event::on(BaseMailer::className(), BaseMailer::EVENT_AFTER_SEND, function ($event) { $message = $event->message->getSwiftMessage(); $textBody = $message->getBody(); $fileName = $event->sender->generateMessageFileName(); FileHelper::createDirectory(Yii::getAlias($this->mailPath)); file_put_contents(Yii::getAlias($this->mailPath) . '/' . $fileName, $message->toString()); $this->_messages[] = ['isSuccessful' => $event->isSuccessful, 'time' => $message->getDate(), 'headers' => $message->getHeaders(), 'from' => $this->convertParams($message->getFrom()), 'to' => $this->convertParams($message->getTo()), 'reply' => $this->convertParams($message->getReplyTo()), 'cc' => $this->convertParams($message->getCc()), 'bcc' => $this->convertParams($message->getBcc()), 'subject' => $message->getSubject(), 'body' => $textBody, 'charset' => $message->getCharset(), 'file' => $fileName]; }); }
/** * This method is invoked right before an action is to be executed (after all possible filters.) * It checks the existence of the db and mailer components. * @param \yii\base\Action $action the action to be executed. * @return boolean whether the action should continue to be executed. */ public function beforeAction($action) { try { if (parent::beforeAction($action)) { $this->db = Instance::ensure($this->db, Connection::className()); $this->mailer = Instance::ensure($this->mailer, BaseMailer::className()); return true; } } catch (Exception $e) { $this->stderr("ERROR: " . $e->getMessage() . "\n"); } return false; }
/** * This method is invoked right before an action is to be executed (after all possible filters.) * It checks the existence of the db and mailer components. * @param \yii\base\Action $action the action to be executed. * @return boolean whether the action should continue to be executed. */ public function beforeAction($action) { try { if (parent::beforeAction($action)) { $this->db = Instance::ensure($this->db, Connection::className()); $this->mailer = Instance::ensure($this->mailer, BaseMailer::className()); return true; } } catch (Exception $e) { Log::error($e->getMessage(), null, __METHOD__); } return false; }
/** * @inheritdoc */ public function init() { parent::init(); Event::on(BaseMailer::className(), BaseMailer::EVENT_AFTER_SEND, function ($event) { /* @var $message MessageInterface */ $message = $event->message; $messageData = ['isSuccessful' => $event->isSuccessful, 'from' => $this->convertParams($message->getFrom()), 'to' => $this->convertParams($message->getTo()), 'reply' => $this->convertParams($message->getReplyTo()), 'cc' => $this->convertParams($message->getCc()), 'bcc' => $this->convertParams($message->getBcc()), 'subject' => $message->getSubject(), 'charset' => $message->getCharset()]; // add more information when message is a SwiftMailer message if ($message instanceof \yii\swiftmailer\Message) { /* @var $swiftMessage \Swift_Message */ $swiftMessage = $message->getSwiftMessage(); $messageData['body'] = $swiftMessage->getBody(); $messageData['time'] = $swiftMessage->getDate(); $messageData['headers'] = $swiftMessage->getHeaders(); } // store message as file $fileName = $event->sender->generateMessageFileName(); FileHelper::createDirectory(Yii::getAlias($this->mailPath)); file_put_contents(Yii::getAlias($this->mailPath) . '/' . $fileName, $message->toString()); $messageData['file'] = $fileName; $this->_messages[] = $messageData; }); }
public function init() { parent::init(); //Название проекта. if (!$this->appName) { $this->appName = \Yii::$app->name; } else { \Yii::$app->name = $this->appName; } //Генерация файла с подключением настроек extensions если его нет if (!file_exists(AUTO_GENERATED_MODULES_FILE)) { $this->generateModulesConfigFile(); } //init view theme $this->templates = ArrayHelper::merge($this->templatesDefault, (array) $this->templates); foreach ($this->templates as $code => $templateData) { if ($code == $this->template) { if ($pathMap = ArrayHelper::getValue($templateData, 'pathMap')) { if (is_array($pathMap)) { \Yii::$app->view->theme = new Theme(['pathMap' => $pathMap]); } } } } //TODO: may be is depricated. While better to use '@app/views/' \Yii::setAlias('template', '@app/views/'); $this->emailTemplates = ArrayHelper::merge($this->emailTemplatesDefault, (array) $this->emailTemplates); \Yii::$app->language = $this->languageCode; //Отлов событий отправки сообщений с сайта, и их модификация. \yii\base\Event::on(\yii\mail\BaseMailer::className(), \yii\mail\BaseMailer::EVENT_BEFORE_SEND, [$this, 'beforeSendEmail']); if (\Yii::$app instanceof Application) { //console init $this->_initConsole(); } else { //web init $this->_initWeb(); } }
private function sendPasswordResetEmail($email) { $user = User::findOne(['status' => User::STATUS_ACTIVE, 'email' => $email]); if (!$user) { return false; } $user->password_reset_token = Yii::$app->security->generateRandomString(); if ($user->save(false)) { $mailer = Instance::ensure($this->mailer, BaseMailer::className()); return $mailer->compose('@gromver/platform/basic/modules/auth/views/emails/passwordResetToken', ['user' => $user])->setFrom(Yii::$app->grom->params['supportEmail'], Yii::t('gromver.platform', '{name} robot', ['name' => Yii::$app->grom->siteName]))->setTo($user->email)->setSubject(Yii::t('gromver.platform', 'Password reset for {name}.', ['name' => Yii::$app->grom->siteName]))->send(); } return false; }
private function sendPasswordResetEmail($email) { /** @var User $user */ $user = User::findOne(['status' => User::STATUS_ACTIVE, 'email' => $email]); if (!$user) { return false; } //$user->password_reset_token = Yii::$app->security->generateRandomString(); $user->generatePasswordResetToken(); if ($user->save(false)) { /** @var \gromver\platform\core\modules\auth\Module $authModule */ $authModule = $this->module; $mailer = Instance::ensure($authModule->mailer, BaseMailer::className()); return $mailer->compose($authModule->emailLayoutPasswordResetToken, ['user' => $user])->setFrom(Yii::$app->supportEmail)->setTo($user->email)->setSubject(Yii::t('gromver.platform', 'Password reset for {name}.', ['name' => isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME']]))->send(); } return false; }