In meinem Benutzermodell muss ich nach dem Einfügen eines neuen Datensatzes eine E-Mail senden. Ich kann nicht warten, dass E-Mails gesendet werden, weil es zu lange dauert. Also habe ich versucht, Event-Handler in Model selbst zu verwendenFügen Sie den yii2-Ereignishandler in das Modell selbst ein
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();
}
}
Aber es funktioniert keine Idee?
Es ist eine E-Mail-Verifizierung, so kann ich es nicht als CRON-Job festlegen. Gibt es eine andere Methode zum Senden von E-Mails als schnelle Post wie Mandrill? –
Natürlich können Sie es als Cron senden. Was sind die technischen/logischen Überlegungen, warum Sie nicht können? Natürlich können Sie auch Mandrill verwenden, den ich in der Vergangenheit benutzt habe. https://packagist.org/packages/nickcv/yii2 -mandrill –
können Sie mir ein Beispiel für die Einstellung von Cron-Job geben, wie kann ich E-Mails sofort senden, wenn neue Benutzerdatensätze eingefügt werden. –