yii2 - yii2 mailer 邮件未发送
问题描述
发送邮件有两种完全相同的方式(注册新用户、发信激活用户)。在控制台中实现了一种方法,它可以工作:
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();
}
}
第二个在网站上注册时必须发送一封信,但是很可惜,这封信没有来(没有错误):
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()
对这两个动作都有效。
解决方案
有必要更改服务器web.php
设置
transport' => [
'class' => 'Swift_SmtpTransport',
'host' => 'smtp.gmail.com',
'username' => '****',
'password' => '****',
'port' => '465',
'encryption' => 'ssl',
],
信件形成,但没有发送。
推荐阅读
- amazon-web-services - 如何禁用 AWS Global Accelerator 流日志
- javascript - 当 div 在视口中时添加类(水平滚动)
- javascript - 在 React 中使用 require 动态加载图像具有不同的行为
- python - 异步和线程以及获取通道并将消息发送到通道 discord.py Python
- kubernetes - 副本集是控制平面层的责任吗?
- javascript - 如何在 Django 项目中加载 ckeditor
- sql - SQL:将行转换为列
- javascript - 使用 assert 测试 JS 中是否显示错误信息
- javascript - 如何优化创建两个数组项的所有可能组合的两个嵌套循环
- haskell - 使用 Data.Tree 模块构建和修改树