public function updateRequestAction() { MailerTemplate::checkRequired(UsersModule::MAILER_TEMPLATE_CHANGE_PASSWORD); $model = new User(User::SCENARIO_CHANGE_PASSWORD_REQUEST); $form = new Form('users.ChangePasswordRequestForm', $model); $this->performAjaxValidation($model); if (isset($_POST['User'])) { $model->attributes = $_POST['User']; if ($model->validate()) { $user = User::model()->find("email = '{$model->email}'"); if ($user) { if ($user->status == User::STATUS_ACTIVE) { $user->password_recover_code = md5($user->password . $user->email . $user->id . time()); $user->password_recover_date = new CDbExpression('NOW()'); $user->save(); $outbox = new MailerOutbox(); $outbox->template_id = MailerTemplate::model()->getIdByCode(UsersModule::MAILER_TEMPLATE_CHANGE_PASSWORD); $outbox->user_id = $user->id; $outbox->save(); Yii::app()->user->setFlash('success', 'На ваш Email отправлено письмо с дальнейшими инструкциями.'); } else { if ($user->status == User::STATUS_NEW) { Yii::app()->user->setFlash('error', UserIdentity::ERROR_NOT_ACTIVE); } else { Yii::app()->user->setFlash('error', UserIdentity::ERROR_BLOCKED); } } } else { Yii::app()->user->setFlash('error', UserIdentity::ERROR_UNKNOWN_EMAIL); } $this->redirect($_SERVER['REQUEST_URI']); } } $this->render("changePasswordRequest", array('form' => $form)); }
public function actionManage() { $model = new MailerOutbox('search'); $model->unsetAttributes(); if (isset($_GET['MailerOutbox'])) { $model->attributes = $_GET['MailerOutbox']; } $this->render('manage', array('model' => $model)); }
public function actionActivateAccountRequest() { MailerTemplate::checkRequired(UsersModule::MAILER_TEMPLATE_ACTIVATION); $model = new User(User::SCENARIO_ACTIVATE_REQUEST); $form = new Form('users.ActivateRequestForm', $model); $this->performAjaxValidation($model); if (isset($_POST['User'])) { $model->attributes = $_POST['User']; if ($model->validate()) { $user = User::model()->findByAttributes(array('email' => $_POST['User']['email'])); if (!$user) { Yii::app()->user->setFlash('error', 'Введенный вами Email не найден'); } else { switch ($user->status) { case User::STATUS_NEW: $user->generateActivateCode(); $user->scenario = User::SCENARIO_ACTIVATE_REQUEST; $user->activate_date = new CDbExpression('NOW()'); $user->save(); $outbox = new MailerOutbox(); $outbox->user_id = $user->id; $outbox->template_id = MailerTemplate::model()->getIdByCode(UsersModule::MAILER_TEMPLATE_ACTIVATION); $outbox->save(); Yii::app()->user->setFlash('success', 'На ваш Email отправлено письмо с дальнейшими инструкциями.'); break; case User::STATUS_ACTIVE: Yii::app()->user->setFlash('error', UserIdentity::ERROR_ALREADY_ACTIVE); break; case User::STATUS_BLOCKED: Yii::app()->user->setFlash('error', UserIdentity::ERROR_BLOCKED); break; } } } } $this->render('activateAccountRequest', array('form' => $form)); }
public function run($args) { Yii::app()->getModule('main'); Yii::app()->getModule('mailer'); MailerOutbox::sendEmails(); }
public function actionSendEmails() { Param::checkRequired(array(MailerModule::PARAM_REPLY_EMAIL, MailerModule::PARAM_FROM_EMAIL, MailerModule::PARAM_FROM_NAME, MailerModule::PARAM_PASSWORD, MailerModule::PARAM_LOGIN, MailerModule::PARAM_HOST, MailerModule::PARAM_PORT), 'mailer'); MailerOutbox::sendEmails(); }
public static function sendEmails() { $outbox_emails = MailerOutbox::model()->findAllByAttributes(array('status' => MailerOutbox::STATUS_QUEUE), array('order' => 'date_create', 'limit' => self::MAILS_PACKET_SIZE)); foreach ($outbox_emails as $outbox_email) { //$outbox_email->status = MailerOutbox::STATUS_PROCESS; //$outbox_email->save(); try { self::sendMail($outbox_email->email, $outbox_email->subject, $outbox_email->body); $outbox_email->date_send = new CDbExpression('NOW()'); $outbox_email->status = MailerOutbox::STATUS_SENT; } catch (Exception $e) { $outbox_email->status = MailerOutbox::STATUS_ERROR; $outbox_email->log = $e->getMessage(); } $outbox_email->save(); } }