laravel SPA 发送邮箱验证码

发布时间:2023-10-13 15:30:41 浏览次数:314

1. 开启 QQ 邮箱smtp,获取授权码:

登录 QQ 邮箱 -> 设置 -> 账户 -> 开启 POP3/SMTP 服务

获取授权码:

image.png

授权码

  1. laravel邮件配置

配置 .env 文件

MAIL_DRIVER=smtp
MAIL_HOST=smtp.qq.com
MAIL_PORT=465MAIL_USERNAME=6*****9@qq.com
MAIL_PASSWORD=d*********j
MAIL_ENCRYPTION=ssl
MAIL_FROM_ADDRESS=
MAIL_FROM_NAME=
  1. 添加控制器方法,发送邮件(仅描述主要部分,自己配路由,进行完善)

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());
        }
    }
}
  1. 编写可邮寄类
    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');
    }
}
  1. 编写视图文件

resources/views/emails/verification.blade.php

<div>{{ $content }}</div>


最新文章
备案号:赣ICP备2022011147号-1
备案号:赣ICP备2022011147号-2