2019-05-11 16:47:13
围观(4533)
首先安装一个包:
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数据库操作