美文网首页
laravel SPA 发送邮箱验证码

laravel SPA 发送邮箱验证码

作者: charmingcheng | 来源:发表于2020-01-16 13:54 被阅读0次

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

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

获取授权码:


授权码
  1. 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=
  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>

相关文章

网友评论

      本文标题:laravel SPA 发送邮箱验证码

      本文链接:https://www.haomeiwen.com/subject/fiqunctx.html