1.在配置文件main-local.php components=>[]裏面配置php
'mailer' => [ 'class' => 'yii\swiftmailer\Mailer', 'useFileTransport' =>false,//這句必定有,false發送郵件,true只是生成郵件在runtime文件夾下,不發郵件 'transport' => [ 'class' => 'Swift_SmtpTransport', 'host' => 'smtp.163.com', //每種郵箱的host配置不同 'username' => '15618380091@163.com', 'password' => '*******', 'port' => '25', 'encryption' => 'tls', ], 'messageConfig'=>[ 'charset'=>'UTF-8', 'from'=>['15618380091@163.com'=>'admin'] ], ],
二、controller控制器中 代碼:html
<?php $mail= Yii::$app->mailer->compose(); $mail->setTo('***********@qq.com'); $mail->setSubject("郵件測試"); //$mail->setTextBody('zheshisha '); //發佈純文字文本 $mail->setHtmlBody("<br>問我我我我我"); //發佈能夠帶html標籤的文本 if($mail->send()) echo "success"; else echo "failse"; die(); ?>
ok,這樣就能夠發送郵件了web
如需加載模板 把$mail= Yii::$app->mailer->compose();
修改爲 $mail= Yii::$app->mailer->compose('xiaoma',['aa'=>222]);
注:aa是想tiandi.php裏面傳遞的參數。swift
郵件模板 tiandi.php裏面的代碼 :app
<?php use yii\helpers\Html; /* @var $this yii\web\View */ /* @var $user common\models\User */ $resetLink = Yii::$app->urlManager->createAbsoluteUrl(['site/reset-password', 'token' => $aa]); ?> < a href="#" ><?php echo $resetLink ?></a>
加載模板的郵件代碼:yii
$mail= Yii::$app->mailer->compose('xiaoma',['aa'=>222]); $mail->setTo('1401619705@qq.com'); $mail->setSubject("郵件測試"); $mail->setTextBody('zheshisha '); if($mail->send()) echo "success"; else echo "failse"; die();
Yii2經過郵箱找回密碼的流程測試
public function sendEmail() { /* @var $user User */ $user = User::findOne([ 'status' => User::STATUS_ACTIVE, 'email' => $this->email, ]); if ($user) { if (!User::isPasswordResetTokenValid($user->password_reset_token)) { $user->generatePasswordResetToken(); }
//獲得當前url加控制器 $url=Yii::$app->request->getHostInfo().Yii::$app->user->returnUrl; if ($user->save()) { return \Yii::$app->mailer->compose() ->setTo($this->email) ->setSubject('郵件:') ->setHtmlbody('<a href="'.$url."?r=site/reset-password&token=".$user->password_reset_token.'">尊敬的'.$user->username.'用戶,請點擊重設密碼!</a>') ->send(); } } return false; }