Laravel6 全套入门实战邮件发送
视频章节
课程内容
本文目录
邮件发送
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)
没有记录
请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!