1. 程式人生 > >Laravel 5.4 使用 Mail 傳送郵件獲取驗證碼功能(使用的配置郵箱為126郵箱)

Laravel 5.4 使用 Mail 傳送郵件獲取驗證碼功能(使用的配置郵箱為126郵箱)

 1 <?php
 2 
 3 namespace App\Modules\Liveapi\Http\Controllers\Personnel;
 4 
 5 use App\Modules\Liveapi\Http\Controllers\Controller;
 6 use Illuminate\Http\Request;
 7 use Illuminate\Support\Facades\Cache;
 8 use Illuminate\Support\Facades\DB;
 9 use Mail;
10 
11 class UserinfoController extends Controller
12 {
13     
14     public function verify(Request $request)
15     {
16         $email = $request->input("email");
17         if (!$email) {
18             return $this->result([], "郵箱不正確", 401);
19         }
20         if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
21             return $this->result([], "非法郵箱格式", 401);
22         }
23         $model = ShimmerLiveshopSmslog::where('mobile',$email)->orderBy('created_at','desc')->limit(1)->first();
24         $code = json_decode($model->data);
25         $code_end = $code->code;
26         $codetime = floor((time() - strtotime($model->created_at))/60);
27         $time = 5;
28         if($codetime > $time){
29             $code = rand(100000, 999999);
30             
31             $content = '驗證碼為:'.$code;
32             
33             Mail::raw($content, function ($message)use ($email) {
34                 $message ->to($email)->subject('註冊驗證碼');
35             });
36             
37             $uid = 0;
38             $data = array('uniacid' => Request()->route('uniacid'), 'uid' => $uid, 'type' => 1, 'data' => json_encode(array('code' => $code)), 'mobile' => $email, 'log' => 1);
39 
40             $res = (new ShimmerLiveshopSmslog())->fill($data)->save();
41 
42             return $this->result(['res'=>$res]);
43         }else{
44             return $this->result([], "傳送過於頻繁,請" . $time . "分鐘後再試", 401);
45         }
46     }
47 
48 }
49 
50 ?>

需要注意以下三點:

  1、郵箱配置

  (1)、修改 .env 檔案中的郵箱配置為對應的資訊,MAIL_HOST根據自己對應的郵箱地址進行修改;MAIL_USERNAME 是你的郵箱賬號;注意 MAIL_PASSWORD 不是郵箱的登入密碼,是授權碼

  

 

   (2)、修改config/mail.php 檔案

  

  2、use Mail; 

 

  3、在 Mail::raw 傳送郵件時,收件人的郵箱一定要用 use ($email) 傳遞,不然會報一個收件人郵箱為空的錯誤

注:1、修改完 .env 檔案 一定要使用 php artisan config:cache 清除快取,不然有可能配置檔案不會生效;如果專案已經在伺服器上,修改了 .env 檔案清除快取後依然不好用,可以直接在mail.php 中進行配置修改。

  2、傳送郵件成功後如果郵箱中沒有新郵件提醒,一定要去垃圾郵件中確認一下,有可能會把驗證碼郵件歸類為垃圾郵