php laravel 發送郵件(超級簡單方便,親測好用)

首先:QQ郵箱 --設置-- 賬戶

帳戶一欄往下拉,找到如下紅框一行,點擊開啓(如果不知道啥時候開啓了就關了再開),開啓時候會給一串祕鑰:

第一步:laravel項目自帶的有config/mail.php文件,打開修改(建議不要直接修改config卡里面東西,最好在env裏面配置)

.env配置如下:

#MAIL
MAIL_DRIVER=smtp        //寫死
MAIL_HOST=smtp.qq.com   //我用的發件人是qq郵箱,如果163郵箱的話把qq換成163
MAIL_PORT=465           //寫死
[email protected] //發件人郵箱地址跟MAIL_USERNAME配一樣
MAIL_FROM_NAME=尋匠之美-機器人 //郵件來源名稱
[email protected]  //郵箱地址-相當於發件人
MAIL_PASSWORD='你自己的郵箱上面生成的SMTP祕鑰(切記不是你郵箱密碼哈)'
MAIL_ENCRYPTION=ssl     //寫死

上面MAIL的直接拷貝到 .env 文件裏面(前面大寫常量不用改,都是laravel自帶的),改成你自己的配置信息就OK了。

上圖看上面配置信息對面效果

代碼邏輯

1.封裝號服務,在需要的地方直接調用就行

說明:title就是對應上面效果圖中的  本週數據統計結果

           content是要發送的郵件內容,

           email_arr是郵件接收者的郵箱數組

<?php
namespace App\Services;

use Illuminate\Support\Facades\Mail;

class SendEmailService
{
    public static function send($type,$title,$content='',$email_arr){
        switch ($type){
            case 1: //發送純文本內容
                Mail::raw($content, function ($message,$email_arr,$title){
                    $emailArr = array_filter($email_arr);   //去空值
                    foreach ($emailArr as $email){
                        //   $email ? $message->to($email)->subject($title) : '';
                        // * 如果你已經設置過, mail.php中的from參數項,可以不用使用這個方法,直接發送
                        //   $message->from("[email protected]", "laravel學習測試");
                        $message->subject($title);
                        // 指定發送到哪個郵箱賬號
                        $message->to($email);
                    }
                });
                break;
            case 2://把內容渲染到html頁面,然後發送郵件
                $send = [
                    'email'  =>$email_arr,
                    'title'   =>$title,
                ];
                Mail::send('emails.email',['send'=>$send], function ($message) use($send){
                    $emailArr = array_filter($send['email']);   //去空值
                    foreach ($emailArr as $email){
                        // * 如果你已經設置過, mail.php中的from參數項,可以不用使用這個方法,直接發送
                        //   $message->from("[email protected]", "laravel發送郵件測試");
                        $message->subject($send['title']);
                        // 指定發送到哪個郵箱賬號
                        $message->to($email);
                    }
                });
                break;
            default:
                return [false,'類型有誤!'];
                break;
        }

        // 判斷郵件是否發送失敗
        if(count(Mail::failures())) {
            return [false,'郵件發送失敗'];
        }else{
            return [true,'郵件發送成功'];
        }
    }
}

代碼中我封裝了2種郵件

①發送純文本郵件很簡單,看代碼套用就行,不多說。

②因爲是給領導推送運營數據,所以還是還看點爲好,那就將內容渲染到html頁面

            那就找到如下路徑創建跟我一樣的頁面文件,頁面文件名和頁面渲染的變量對應關係如下(html頁面代碼最後也可以公佈出來)

            

            

            頁面裏直接這樣使用變量:

            

下面可以在要使用的地方調用了:

到此就一切OK了。

最後貼上最簡單的表格頁面代碼

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<style type="text/css">
    .table-main{
        width: 100%;
        height: auto;
        display: flex;
        flex-wrap: wrap;
        border-left: solid 1px #000000;
    }
    .item{
        width: 350px;
        border-right: solid 1px #000000;
        border-top: solid 1px #000000;
        border-bottom: solid 1px #000000;
        color: black;
        font-size: 20px;
    }
    .title{
        border-bottom: solid 1px #000000;
        width: 100%;
        height: 50px;
        color: black;
        font-size: 18px;
        text-align: center;
        line-height: 50px;
    }
    .content{
        width: 100%;
        height: 100px;
        color: black;
        font-size: 18px;
        text-align: center;
        line-height: 100px;
    }
</style>
<body>
<div class="table-main">
    <div class="item">
        <div class="title">註冊用戶總數</div>
        <div class="content">{{$send['content']['total_user_sum']}}</div>
    </div>
    <div class="item">
        <div class="title">本週新增人數</div>
        <div class="content">{{$send['content']['add_user_sum']}}</div>
    </div>
    <div class="item">
        <div class="title">本週新增支付用戶數</div>
        <div class="content">{{$send['content']['add_pay_user_sum']}}</div>
    </div>
    <div class="item">
        <div class="title">本週訂單數量</div>
        <div class="content">{{$send['content']['add_order_sum']}}</div>
    </div>
    <div class="item">
        <div class="title">本週總訂單流水(元)</div>
        <div class="content">{{$send['content']['total_order_amount']}}</div>
    </div>

</div>
</body>
</html>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章