Chinaunix首页 | 论坛 | 博客
  • 博客访问: 545964
  • 博文数量: 29
  • 博客积分: 1785
  • 博客等级: 上尉
  • 技术积分: 821
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-29 17:28
个人简介

我,计算机应用技术嵌入式方向出身,从事软件工程师工作,主要负责linux服务器维护,asterisk呼叫中心服务器维护,ERP和CRM系统开发,pbx系统开发,以及网站建设。 希望能交更多的朋友。

文章分类
文章存档

2015年(1)

2014年(2)

2013年(9)

2012年(10)

2011年(1)

2010年(3)

2009年(3)

分类: Web开发

2014-03-05 16:13:44

 swiftmailer我就不介绍了,有兴趣的朋友可以自己找资料,下面主要是讲一下yii2如何通过swiftmailer来发email.

情景:通过发email找回密码

config文件夹里的配置文件,如main.php,配置如下:

点击(此处)折叠或打开

  1. 'mail' => [
  2.             'class' => 'yii\swiftmailer\Mailer',
  3.             'viewPath' => '@common/mail',
  4.             //'useFileTransport' => true, //放在本地的邮件列表,测试邮件的时候可以开启这个
  5.                     
  6.                         'transport' => [
  7.                                     'class' => 'Swift_SmtpTransport',
  8.                                     'host' => 'smtp.126.com',
  9.                                     'username' => 'your email',
  10.                                     'password' => 'password',
  11.                                     'port' => '465',
  12.                                     'encryption' => 'ssl',
  13.                                   
  14.                             ],
  15.                      
  16.         ],
controllers文件夹里的siteController.php,增加actionRequestPasswordReset,如下:

点击(此处)折叠或打开

  1. public function actionRequestPasswordReset() {
  2.         $model = new PasswordResetRequestForm();
  3.             
  4.         if ($model->load(Yii::$app->request->post())) {

  5.             if ($model->sendEmail()) {
  6.                 Yii::$app->getSession()->setFlash('success', 'Check your email for further instructions.');
  7.                 return $this->goHome();
  8.             } else {
  9.                 Yii::$app->getSession()->setFlash('error', 'Sorry, we are unable to reset password for email provided.');
  10.             }
  11.         }

  12.         return $this->render('requestPasswordResetToken', [
  13.                     'model' => $model,
  14.         ]);
  15.     }
models文件夹里的PasswordResetRequestForm.php文件,增加sendEmail函数,如下:

点击(此处)折叠或打开

  1. public function sendEmail()
  2.     {
  3.         /** @var User $user */
  4.         $user = User::find([
  5.             'status' => User::STATUS_ACTIVE,
  6.             'email' => $this->email,
  7.         ]);

  8.         if (!$user) {
  9.             return false;
  10.         }

  11.         $user->generatePasswordResetToken();
  12.         if ($user->save()) {
  13.             return \Yii::$app->mail->compose()
  14.                 ->setFrom('from email')
  15.                 ->setTo('to email')
  16.                 ->setSubject('subject ')
  17.                 ->setTextBody('内容')
  18.                 ->send();

  19.         }

  20.         return false;
  21.     }


ok,相信经过上面的代码,你的邮件已经收到一封来自你自己发出的邮件了!

关于yii2 send email 的问题可以send email to 1017483952@qq.com探讨!


阅读(13271) | 评论(2) | 转发(0) |
0

上一篇:yii2权限(RBAC)

下一篇:yii2 log

给主人留下些什么吧!~~

zh_jeremy2015-09-03 15:47:37

可以发一篇发邮件找回密码的吗?

yii22014-04-23 13:15:10

很nice!!!