Laravel框架发送系统提示邮件
秉承开源精神,转载请注明出处!
- 首先保证你的.env中配置正确
MAIL_DRIVER=smtp
MAIL_HOST=smtp.qq.com
MAIL_PORT=465
MAIL_USERNAME=XXXX@qq.com
MAIL_PASSWORD=授权码
MAIL_ENCRYPTION=ssl
MAIL_FROM_ADDRESS=xxxxx@qq.com
MAIL_FROM_NAME=$name
上述事例我展示的是QQ邮箱的配置方案,实际工作项目中我写的是公司企业邮箱的配置信息,大家根据自己需要配置。
QQ授权码:
**$name:**指的是收件人收到邮件后展示的你的名字
- 生成一个发送邮件类,以后所有发邮件的都调用这里就行了;
$ php artisan make:controller App\Http\Controller\SendMailController
Controller created successfully.
- 邮件类代码:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Mail;
class SendMailController extends Controller
{
private $toWho = "";
private $subject = "";
/**
* [__construct description]
* @author Williamslife
* @Email Williamslife@iCloud.com
* @DateTime 2020-12-17T17:48:09+0800
* @param [type] $demoBlade [邮件的模板]
* @param array $data [模板中需要的数组参数]
* @param [type] $toWho [给谁发消息]
* @param [type] $subject [主题]
*/
public function __construct($demoBlade, $data = [], $toWho, $subject)
{
$this->demoBlade = $demoBlade;
$this->data = $data;
$this->toWho = $toWho;
$this->subject = $subject;
}
public function sendMail()
{
// 第一个为引用的模板,第二个为给模板传递的变量,第三个为一个闭包,参数绑定Mail类的一个实例。
$flag = Mail::send($this->demoBlade, $this->data, function($message){
$message ->to($this->toWho)->subject($this->subject);
});
// 返回的一个错误数组,利用此可以判断是否发送成功
dd(Mail::failures());
}
}
- 使用(样例)
use App\Http\Controllers\SendMailController;
// 下面的代码放到你方法的某个位置来调用发邮件功能
$sendMail = (new SendMailController('pages.inventoryAlert', ['buyNum' => $v['amount'], 'info' => $info, 'date' => date("Y年m月d日 H:i:s"), "remain" => $remain], ADMINISTRATIOR_EMAIL_ADDRESS, $info['title'] . "库存不足提醒"))->sendMail();