在项目运行中,涉及到注册,更改密码或者与用户交互沟通时,使用成本低的邮件发送会是我们的不二选择,本文以qq邮件为例,记录怎么利用laravel方便快捷的发送邮件(好记性不如烂笔头)
author:he
qq:760863706
laravel:laravel 5.1.*
date:2018-9-16
1:开启邮件smtp服务
进入qq邮件设置,开启服务,获取登录密码,这里假设为xxxxx
2:laravel 配置mail相关参数
项目/config/mail.php更改相关参数
'driver' => env('MAIL_DRIVER', 'smtp'),
'host' => env('MAIL_HOST', 'smtp.qq.com'),
'port' => env('MAIL_PORT', 465),
'from' => ['address' => '760863706@qq.com', 'name' => '发件人'],
项目.env文件配置对应参数
MAIL_DRIVER=smtp
MAIL_HOST=smtp.qq.com
MAIL_PORT=465
MAIL_USERNAME=760863706@qq.com
//获取的登录密码
MAIL_PASSWORD=xxxxx
MAIL_ENCRYPTION=ssl
3:项目实测
(1):假如我们只是发生一个简单的文本信息,可以用如下的方式进行,在控制器中引入mailer类,方法中根据具体逻辑发送文本信息
//控制器引入类
use Mail;
//方法中具体使用
//待接收邮箱地址
$to = '760863706@qq.com';
Mail::raw('这是一段简单的文本信息', function ($message) use ($to) {
$message ->to($to)->subject('文本的主题');
});
(2):假如我们想给用户发送一个详细的html页面,里面包含各种样式,可以使用以下方法发送
(2-1):只发送模板,不涉及传参
//调用test模板,文本详细路径为:项目/resources/views/index/test.blade.php
$to = '760863706@qq.com';
Mail::send('index/test',[],function($message) use ($to){
$message ->to($to)->subject('模板发送测试');
});
//模板代码
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<h1 style="color: red">这个是一个html模板测试</h1>
</body>
</html>
通过测试得到的邮件显示效果如下:
(2-2):发送模板,涉及传参
//调用test模板,文本详细路径为:项目/resources/views/index/test.blade.php
$param = '具体参数';
$to = '760863706@qq.com';
Mail::send('index/test',['param'=>$param],function($message) use ($to){
$message ->to($to)->subject('模板传参发送测试');
});
//模板代码
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<h1 style="color: red">这个是一个html模板传参测试,参数为:<span style="color:blue">{{$param}}</span></h1>
</body>
</html>
通过测试得到的邮件显示效果如下:
以上为本文记录的知识点,只是一些简单的使用方法,具体mailer类里面的具体方法和实现过程,可以参考/vendor/laravel/framework/src/illuminate\Mail\Mailer.php