Пример #1
0
 /**
  * @inheritdoc
  */
 public function init()
 {
     parent::init();
     Event::on(BaseMailer::className(), BaseMailer::EVENT_AFTER_SEND, function ($event) {
         AuditMail::record($event);
     });
 }
Пример #2
0
 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];
     });
 }
Пример #3
0
 /**
  * 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;
 }
Пример #4
0
 /**
  * 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;
 }
Пример #5
0
 /**
  * @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;
     });
 }
Пример #6
0
 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;
 }