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>

 

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