2019-05-11 16:47:13
围观(5191)
首先安装一个包:
composer require guzzlehttp/guzzle
修改根目录ENV文件
MAIL_DRIVER=smtp MAIL_HOST=smtp.qq.com MAIL_PORT=587 MAIL_USERNAME=邮箱地址 MAIL_PASSWORD=密钥 MAIL_ENCRYPTION=tls #以下两个参数存放在config/mail 这是个坑 不修改放到ENV处理会导致鉴权失败 MAIL_FROM_ADDRESS=邮箱地址 MAIL_FROM_NAME=发送人名称
生成一个邮件类
php artisan make:mail OrderShipped
编写邮件类
class OrderShipped extends Mailable
{
use Queueable, SerializesModels;
/**
* Create a new message instance.
*
* @return void
*/
//定义一个变量 用于存放传递过来的数组/参数
public $data = [];
public function __construct($data = null)
{
//构造方法 将传递过来的数据存入变量
$this->data = $data;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->view('test')->with([
'content' => $this->data
])->subject($this->data['title']);
}
}build函数内视图为发送的HTML模板,with方法传递的数据则为模板变量,subject函数写入邮件标题
视图(test.blade.php)例:
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<h3>the mail from {{ $content['name'] }}.</h3>
<h4>content: {{ $content['content'] }}</h4>
</body>
</html>然后写入一条路由 指向一个控制器,控制器内容:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\FacadesMail;
use App\Mail\OrderShipped;
//以上两个类必须引入
class MailController extends Controller
{
public function send()
{
//定义一个需要传递的数组
$data = [
'name' => 'jun',
'content' => 'test mail send' . rand(1, 999),
'title'=> '测试邮件发送'. rand(1, 999)
];
$res = Mail::to('需要发送的邮箱地址')->send(new OrderShipped($data));
if($res == null){
//此处返回值是null 如果发送不成功则会报错 应该有其他的判断方法,try或许可以更好处理
return '发送成功';
}else{
return '发送失败';
}
}
}多个发信账户
$backup = Mail::getSwiftMailer();
// 设置邮箱账号
$transport = \Swift_SmtpTransport::newInstance('smtp.qq.com', 587, 'tls');
$transport->setUsername('xxx@xxx.xxx');
$transport->setPassword('xxxxxx');
$mailer = new \Swift_Mailer($transport);
Mail::setSwiftMailer($mailer);
Mail::send('mail.template', array $data, function ($message) {
$message->from('xxx@xxx.xxx', 'xxxxxx');
$message->subject('邮件主题');
$message->to('receiver@xxx.xxx');
});
Mail::setSwiftMailer($backup);判断邮件是否发送成功
if(count(Mail::failures()) > 0){
return '发送失败';
}else{
return '发送成功';
}本文地址 : bubaijun.com/page.php?id=123
版权声明 : 未经允许禁止转载!
上一篇文章: Laravel安装jwt-auth实现API认证
下一篇文章: 封装原生PHP数据库操作