首先: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>