课程内容

邮件发送

Laravel 基于 SwiftMailer 库提供了一套干净、清爽的邮件 API。Laravel 为 SMTP、Mailgun、Postmark、Amazon SES,以及 sendmail 提供了驱动,从而允许你快速通过本地或云服务发送邮件。

安装包

composer require guzzlehttp/guzzle

驱动

虽然提供了很低启动,但是很多用不到,所以我这里还是直接用默认smtp启动,大家可以在腾讯里面申请,也可以在其他邮箱里面申请即可,如果是企业邮箱,就可以直接开通,个人的话,可能会有一些限制

发送邮箱要求

  • 必须有邮箱地址,也就是必须配置from.address
  • 必须有邮箱地址名字,也就是必须配置from.name
  • 发送邮箱地址必须和from.address相同

创建一个邮箱处理类

php artisan make:mail RegistMail

配置发件人 ,2种形式,一种直接写方法,一种直接在build 里面调用这些方法

app/Mail/RegistMail.php 文件

<?php

namespace App\Mail;

use Illuminate\Bus\Queueable;//队列包含了
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;//序列化模型

class RegistMail 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('view.name');
    }
}

第一种配置方法

from,来自
subject, 标题
view, 视图
attach 附件

<?php

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;

class RegistMail extends Mailable
{
    use Queueable, SerializesModels;
    //这里定义邮箱的发送源
    public $from = [
        [
            'address' => 'email@kong-qi.com',
            'name' => '测试邮箱'
        ]
    ];
    public $config;

    /**
     * Create a new message instance.
     *
     * @return void
     */
    public function __construct($data)
    {
        //
        $this->config = $data;
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->view('mail');
    }

}

描述
增加文件头

public $subject='注册邮箱通知';

描述

第二种方法

<?php

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;

class RegistMail extends Mailable
{
    use Queueable, SerializesModels;

    public $config;

    /**
     * Create a new message instance.
     *
     * @return void
     */
    public function __construct($data)
    {
        //
        $this->config = $data;
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->view('mail')->subject('内部注册通知')->from(
            [
                'address' => 'email@kong-qi.com',
                'name' => '测试邮箱'
            ]
        );
    }

}

调用发送邮件

to 就是接受的邮箱地址

Mail::to('531833998@qq.com')->send(new RegistMail($mail_data));

new RegistMail($mail_data) 注入的内容,可以是类,也可以是数组

$mail_data=[
        'name'=>'空气',
        'content'=>'我是测试数据的内容'
];
Mail::to('531833998@qq.com')->send(new RegistMail($mail_data));
<?php

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;

class RegistMail extends Mailable
{
    use Queueable, SerializesModels;
    public  $config;
    /**
     * Create a new message instance.
     *
     * @return void
     */
    public function __construct($data)
    {
        //
        $this->config=$data;//这个config属性会自动共享给视图文件,这里是config,那么必须是public 属性才可以,然后视图文件直接就$config['name']
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->view('mail');
    }
}

视图文件

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>我是测试邮箱</title>
</head>
<body>
<h3>我是测试邮箱:{{ $config['name'] }}</h3>
<p>{{ $config['content'] }}</p>
</body>
</html>

队列使用

 Mail::to('531833998@qq.com')->queue(new RegistMail($mail_data));

开启了redis
描述

php artisan queue:work

描述
后台运行

php artisan queue:work&

课件

https://github.com/kong-qi/laravel_study_video_course
下载课件:
https://github.com/kong-qi/laravel_study_video_course/releases

评论区 (0)

没有记录
支持 markdown,图片截图粘贴拖拽都可以自动上传。