背景
之所以遇到这个坑,是因为我在公司的电脑打开自己的项目(之前一直都是在家里电脑写的,而且后台配置也不是我经手的/(ㄒoㄒ)/~~),然后再注册账号时发现,点击发送验证码一直报错,如下图:
经历
然后在百度过程中发现stackoverflow也有人提到这个问题
当然很开心啊~~然后我就按着那些说成功解决的回答去配置,终于不再报*500*这个错了,以为多开心,然而出现新的问题,就是一直收不到验证码啊吖吖吖吖
捣鼓啊~~一早上的时间就在填这个坑,终于解决!
解决
解决问题之后,才发现两个非常非常重要的点(我觉得,因为我就是掉在这两坑一早上的吖!!!!!),很多百度都没有提到或者是没有提全的。所以,我就想在这完整的写下解决过程。
一个是.env、另一个是/config/mail.php,这两个是laravel发送邮件涉及的配置文件。
1. env文件配置
使用 composer 生成项目的时候,自动生成 .env 文件里会有邮箱的默认配置字段,如下:
MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
具体我就不细说每一项是什么意思(可以自己百度),需要注意的是:
① MAIL_HOST这里,如果用的是qq邮箱,就填smtp.qq.com;如果是gmail,就填smtp.gmail.com等等,163,126都可以。
② MAIL_USERNAME,这里填你的qq邮箱或gmali邮箱或163邮箱等等,总之你①填qq就qq邮箱,163就163,对应就可以了。
③ MAIL_PASSWORD,这里要非常非常注意!!!,这里不是填你的邮箱密码,而是对应邮箱的动态授权码(这是我第一个跪的地方,捂脸/(ㄒoㄒ)/~~)。这里举个qq邮箱的例子,步骤及配图如下。
- 首先至少需要把POP3/SMTP服务开启
- 点击生成授权码
- 出现验证密保框,按上面发送短信,然后点击‘我已发送’即可
- 成功出现授权码
④ MAIL_PORT、MAIL_ENCRYPTION两项和config里的mail.php一样即可。另外如果MAIL_ENCRYPTION加密方式是ssl,那MAIL_PORT就要填465。具体需要就要自己再去查一下文档了。
所以我的.env文件邮箱的配置最终如下:
2. mail.php文件配置
** !!!注意:**
- 修改完配置后,一定要清除一下缓存:php artisan config:cache(这个是我第二个跪的地方/(ㄒoㄒ)/~~,就是因为忘记清除缓存,然后一直发送失败)。
- 重启一下服务器。