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) { // });
posted @ 2017-03-21 14:46  文沐  阅读(554)  评论(0编辑  收藏  举报