laravel SPA 发送邮箱验证码
2020-01-16 本文已影响0人
charmingcheng
1. 开启 QQ 邮箱smtp,获取授权码:
登录 QQ 邮箱 -> 设置 -> 账户 -> 开启 POP3/SMTP 服务
获取授权码:
- laravel邮件配置
配置 .env 文件
MAIL_DRIVER=smtp
MAIL_HOST=smtp.qq.com
MAIL_PORT=465
MAIL_USERNAME=6*****9@qq.com
MAIL_PASSWORD=d*********j
MAIL_ENCRYPTION=ssl
MAIL_FROM_ADDRESS=
MAIL_FROM_NAME=
- 添加控制器方法,发送邮件(仅描述主要部分,自己配路由,进行完善)
use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Facades\Cache;
use App\Mail\Verification;
public function sendEmailCode(Request $request)
{
if ($email = $request->email) {
try {
$code = substr(md5(mt_rand(1000, 9999)), 0, 6);
$content = '你的邮件验证码为:' . $code;
$key = 'email_' . $request->email;
// 验证码
Cache::put($key, $code, (new Carbon())->addMinutes(10));
Mail::to($request->email)->send(new Verification($content));
return $this->success(null, '验证码已发送邮箱');
} catch (\Exception $e) {
// error
return $this->error($e->getMessage());
}
}
}
- 编写可邮寄类
4.1 可以通过以下命令来生成可邮寄类:
php artisan make:mail Verification
4.2 通过build方法来设置邮件视图。
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
class UserRegister extends Mailable
{
use Queueable, SerializesModels;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->view('emails.verification');
}
}
- 编写视图文件
resources/views/emails/verification.blade.php
<div>{{ $content }}</div>