Larevel 重写发送邮件找回密码
2018-02-07 本文已影响0人
chichoyi
laravel发送邮件找回密码,收到默认的url是:
http://your domain name/password/reset/token
使用自带的发送邮件找回密码,那么用户只能收到上面那串固定的url。可是如果对接需求更改,使用其他的页面地址去找回密码,比如:
http://your domain name/#/reset_password_by_email?token=asdasdasdasda
这种情况比较常见,特别是前后端分离的情况。所以我们该如何去修改邮件内默认的url呢?替代方案有多种,这里介绍相对优秀,而且符合laravel框架认证机制的方案。实际上本文是参考外国朋友的相关文章,我这里对这个方案进行了实践和整理(看懂上面那篇文章而且能完整实践的话,请自行跳过)。
让我们找找laravel默认的发送邮件找回密码的方法:
![](https://img.haomeiwen.com/i2642322/bca08371df74ad6b.png)
进入SendsPasswordResetEmails文件:
![](https://img.haomeiwen.com/i2642322/751250b3f20c560e.png)
到这里很清楚知道,实际上调用的就是这个sendResetLinkEmail这个方法。 因为是在/vendor里的文件,所以不能直接在上面修改,而是需要在这里重写sendResetLinkEmail方法:
![](https://img.haomeiwen.com/i2642322/d7c688335ccdb0a1.png)
新建一个Notification类,运行artisan命令:
![](https://img.haomeiwen.com/i2642322/367c63ea991e0cf7.png)
生成下面这个文件:
![](https://img.haomeiwen.com/i2642322/866195d4a4c6a026.png)
需求的url修改好了,那么如何使用这个notification呢? 请继续看:
![](https://img.haomeiwen.com/i2642322/8a5875ec20b0e3b8.png)
至此,整个过程实践过程就结束了,收到的邮件url是自己填写的那一串啦。 修改发送邮件模板很简单,具体请自行查看laravel文档。