对于发送邮件,绝对有两种相同的方法(注册新用户,发送信函以激活用户)。一个方法是在控制台中实现的,它的工作原理是:
public function actionSendMessage()
{
$user = new User();
$this->readValue($user, 'username');
$this->readValue($user, 'login');
$this->readValue($user, 'email');
$user->hash_password = Yii::$app->getSecurity()->generatePasswordHash($this->prompt('password'));
$this->readValue($user, 'phone');
$this->readValue($user, 'address');;
$user->state = User::STATUS_WAIT;
$user->generateAuthKey();
$user->generateEmailConfirmToken();
if ($user->save()) {
Yii::$app->mailer->compose('@app/mail/emailConfirm', ['user' => $user])
->setFrom([Yii::$app->params['supportEmail'] => Yii::$app->name])
->setTo($user->email)
->setSubject('Email confirmation for ' . Yii::$app->name)
->send();
}
}第二个必须在站点上注册时发送一封信,但是遗憾的是,信没有来(no errors):
public function sign()
{
$user = new User();
$user->username = $this->username;
$user->login = $this->login;
$user->email = $this->email;
$user->hash_password = yii::$app->security->generatePasswordHash($this->password);
$user->phone = $this->phone;
$user->address = $this->address;
$user->state = User::STATUS_WAIT;
$user->generateAuthKey();
$user->generateEmailConfirmToken();
if ($user->save()) {
Yii::$app->mailer->compose('@app/mail/emailConfirm', ['user' => $user])
->setFrom([Yii::$app->params['supportEmail'] => Yii::$app->name])
->setTo($user->email)
->setSubject('Email confirmation for ' . Yii::$app->name)
->send();
}
}在什么情况下会出现错误?
$user->save()是工作,用于这两种操作。
发布于 2018-07-29 03:08:47
必须将web.php中的服务器设置更改为
transport' => [
'class' => 'Swift_SmtpTransport',
'host' => 'smtp.gmail.com',
'username' => '****',
'password' => '****',
'port' => '465',
'encryption' => 'ssl',
],信件形成,但没有发送。
https://stackoverflow.com/questions/51576177
复制相似问题