2017-02-06 11 views
0

В моей модели пользователя мне нужно отправить электронное письмо после вставки новой записи. Я не могу дождаться высылки для отправки электронной почты, потому что это занимает слишком много времени. Поэтому я попытался использовать обработчик событий внутри самой моделиДобавить обработчик событий yii2 в самой модели

class User extends ActiveRecord { 
    public function events() 
    { 
     return [ 
      User::EVENT_AFTER_INSERT => [$this, 'sendEmail'] 
     ]; 
    } 
    public function sendEmail(){ 
     Yii::$app->mailer->compose() 
      ->setTo($this->email) 
      ->setFrom(['mail address' => 'name']) 
      ->setSubject('Verify your Email') 
      ->setHtmlBody('<p>Please click on the <a href="'.Yii::$app->request->hostInfo.'/'.Yii::$app->params['frontEndUrl'].'#/verify-email/' 
       .$this->emailToken. 
       '">link</a> to verify your email</p>') 
      ->send(); 
    } 
} 

Но не получилось?

ответ

0

Вы, вероятно, исходите из фона javascript, но события в PHP не работают таким образом (в Javascript). Если вы поднимете событие, он будет пойман, но не в новом процессе. Даже если вам удастся сделать то, что вы хотите, он все равно будет ждать отправки электронной почты.

Решение будет состоять в том, чтобы использовать какую-то очередь, простейшая просто вставить запись в таблицу «email» в БД и двигаться дальше. У вас может быть cronjob, который обрабатывает таблицу электронной почты и отправляет фактические электронные письма.

+0

Это подтверждение по электронной почте, поэтому я не могу установить его как работу CRON. Есть ли другой способ отправки электронной почты, кроме быстрой почты, например, мандрилл? –

+0

Конечно, вы можете отправить его как cron. Каково техническое/логическое соображение, почему вы не можете? Также, конечно, вы можете использовать мандрилл, который я использовал в прошлом. https://packagist.org/packages/nickcv/yii2-mandrill –

+0

Можете ли вы привести мне пример установки задания cron, как я могу отправить электронную почту мгновенно при вводе новой записи пользователя. –

 Смежные вопросы

  • Нет связанных вопросов^_^