laravel

laravel 之邮件

2018-05-14  本文已影响3人  空气KQ

就使用默认的smtp作为驱动,其他的都要收费啊,要不起

配置帐号

config/mail.php
所以配置都可以通过.env来设置
这里我用了腾讯的企业邮箱
.env

MAIL_DRIVER=smtp
MAIL_HOST=smtp.exmail.qq.com
MAIL_PORT=25
MAIL_USERNAME=email@kong-qi.com
MAIL_PASSWORD=YYYYyyyyxxxxxx
MAIL_ENCRYPTION=null

发送邮件

use Mail;

 public function sendEmailReminder(Request $request, $id)
    {
        $user = User::findOrFail($id);

        Mail::send('emails.reminder', ['user' => $user], function ($m) use ($user) {
            //来源地址,来源名字,
            $m->from('hello@app.com', 'Your Application');
          // 发送给谁的email和名字,后面是主题
            $m->to($user->email, $user->name)->subject('Your Reminder!');
        });
    }
//第一个参数是视图,第二个是传值,第三个匿名闭包回调设置,

纯文本邮件

意思是将你的源码发送出去


image.png
Mail::send(['text' => 'email'], $data, function ($message) {
            $message->from('email@kong-qi.com', 'Larave2l');
            $message->to('531833998@qq.com','kongqi')->subject('dd');
        });

原生字符串邮件

Mail::raw('你的验证码是6700', function ($message) {
            $message->from('email@kong-qi.com', 'Larave2l');
            $message->to('531833998@qq.com','kongqi')->subject('dd');
        });

附件

Mail::send('email', $data, function ($message) {
            $message->from('email@kong-qi.com', 'Larave2l');
            $message->to('531833998@qq.com','kongqi')->subject('dd');
            $message->attach($pathToFile);//这里
        });

视图中使用图片

Laravel自动在所有邮件视图中传入$message变量使其有效

<body>
    Here is an image:
    <img src="<?php echo $message->embed($pathToFile); ?>">
</body>

嵌入原生数据

<body>
    Here is an image from raw data:
    <img src="<?php echo $message->embedData($data, $name); ?>">
</body>

邮件队列

默认队列是同步的,这个没有卵用,队列肯定是异步执行嘛
修改队列配置
config/queue.php
这里我设置为redis
.env

QUEUE_DRIVER=redis
Mail::queue('email', $data, function ($message) {
            $message->from('email@kong-qi.com', 'Larave2l');
            $message->to('531833998@qq.com','kongqi')->subject('dd');

        });

延迟消息队列
单位秒

Mail::later(5,'email', $data, function ($message) {
            $message->from('email@kong-qi.com', 'Larave2l');
            $message->to('531833998@qq.com','kongqi')->subject('dd');

        });

推入指定队列
可以使用queueOn和laterOn方法:

Mail::queueOn('queue-name','email', $data, function ($message) {
            $message->from('email@kong-qi.com', 'Larave2l');
            $message->to('531833998@qq.com','kongqi')->subject('dd');

        });

事件

会发送邮件前触发一个事件,记住,这个事件是在邮件被发送时触发,而不是推送到队列时

'Illuminate\Mail\Events\MessageSending' => [
            'App\Listeners\LogSentMessage',
        ],

上一篇下一篇

猜你喜欢

热点阅读