laravel邮件服务
1,设置邮件服务配置
你可以在.env中配置如下:
1 MAIL_DRIVER=mailgun
2 MAIL_HOST=smtp.126.com //邮件服务器地址
3 MAIL_PORT=25 //邮件端口
4 MAIL_USERNAME=username@126.com//邮件账号
5 MAIL_PASSWORD=password//邮件密码
6 MAIL_ENCRYPTION=tls //加密
或者在config/mail.php文件中配置这些选项:
1 <?php 2 return [ 3 ‘driver’ => env(‘MAIL_DRIVER’, ‘smtp’), 4 ‘host’ => env(‘MAIL_HOST’, ‘smtp.126.com’), 5 ‘port’ => env(‘MAIL_PORT’, 25), 6 ‘from’ => [‘address’ => null, ‘name’ => null], 7 ‘encryption’ => env(‘MAIL_ENCRYPTION’, ‘tls’), 8 ‘username’ => env(‘MAIL_USERNAME’), 9 ‘password’ => env(‘MAIL_PASSWORD’), 10 ‘sendmail’ => ‘/usr/sbin/sendmail -bs’, 11 ‘pretend’ => false, 12 ];
2,在resources/views/emails/建立你的邮件模板,例如:该目录下建立index.blade.php。
代码如下:
<!DOCTYPE html> <html lang=”en”> <head> <meta charset=”UTF-8″> <title>Email-send</title> <style> h1{ color: #0000C2; } </style> </head> <body> <h1>this is a email-object!!!</h1> <p> 这是一份{{ $name }}的邮件,请勿回复!!!——来自未知二次元 </p> </body> </html>
以上模板中包含了{{$name}}变量,是通过邮件Mail门面的send方法传递到模板的。
3,建立邮件路由
在route.php中添加路由如下:
Route::get(’email’, “EmailControllor@sendMail”);
以上使用的是get方式,你也可以使用post方式请求,来传递接收邮件的用户id。
4,创建邮件控制器EmailController
使用artisan创建控制器如下:
php artisan make::controller EmailControllor
5,编写邮件控制器代码
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Mail; use App\Http\Requests; use App\Http\Controllers\Controller; class EmailControllor extends Controller { /** * 发送邮件给用户 */ public function sendMail(){ Mail::send(’emails.index’,[‘name’=>’测试者’],function($m){ $m->from(‘xxx@126.com’,’小李子’); $m->to(‘xxx@qq.com’,’某先生’); }); } }
Mail门面的send()方法用来发送邮件。第一个参数作为邮件的内容,可以是emails/index模板页面。
第二个参数作为传给模板文件的数据数组。第三个参数是毁掉函数,用于设置邮件的主题,收件人,用户名,附件等。
常用的方法解释:
//发件人地址及用户名
$message->from($address, $name = null);
//代发者地址及用户名,邮件会显示由XXX@126.com代发
$message->sender($address, $name = null);
//收件人地址及用户名。
$message->to($address, $name = null);
//抄送地址及用户名
$message->cc($address, $name = null);
//被抄送地址及用户名
$message->bcc($address, $name = null);
$message->replyTo($address, $name = null);
//主题
$message->subject($subject);
//设置优先级
$message->priority($level);
//附件
$message->attach($pathToFile, array $options = []);
// 从$data字符串追加文件…
$message->attachData($data, $name, array $options = []);
// 获取底层SwiftMailer消息实例…
$message->getSwiftMessage();
6,发送纯文本邮件
Mail::raw(‘this is test-mail’, function ($message) { $to = ‘xxx@qq.com’; $message ->to($to)->subject(‘发送一个纯文本邮件’); });
7,邮件附件
$message->attach($attachment,[‘as’=>‘test.txt’]);
$attachment附件地址,as为显示的附件名称。
8.邮件队列
//将邮件放入队列等待发送
Mail::queue(’emails.welcome’, $data, function ($message) { // });
//延时队列邮件的发送
Mail::later(5, ’emails.welcome’, $data, function ($message) { // });
看活一分钟公众号,持续订阅,更有精赞内容分享