繁体   English   中英

如何使用 Laravel 事件发送电子邮件?

[英]How to send Email using Laravel Event?

我已经创建了一个事件。当一个项目被创建时,一封电子邮件将发送给该​​项目所有者。 我已经创建了一个事件和一个监听器。但是我可以将数据存储在数据库中。但是我没有收到邮件。 我收到以下错误:

 FatalThrowableError in SendMailFired.php line 31: Call to a member function toArray() on null

这是我的事件 SendMail.php

<?php

namespace App\Events;

use Illuminate\Broadcasting\Channel;
use Illuminate\Queue\SerializesModels;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;

class SendMail
{
    use InteractsWithSockets, SerializesModels;
    public $id;


    public function __construct($id)
    {
        $this->id = $id;
    }


    public function broadcastOn()
    {
        return new PrivateChannel('channel-name');
    }
}

这是侦听器 (SendMailFired.php) 部分:

<?php

namespace App\Listeners;

use App\Events\SendMail;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use App\Item;
use Mail;

class SendMailFired
{

    public function __construct()
    {

    }

    public function handle(SendMail $event)
    {
          $item = Item::find($event->id)->toArray();

          Mail::send('send', $item, function($message) use ($item) {
            $message->to($item['email']);
            $message->subject('Event Testing');
        });
    }
}

这是控制器部分:

public function store(Request $request)
            {
                $item= new Item();
                $item->title = $request->input(['title']);
                $item->description=$request->input(['description']);
                $item->email = $request->input(['email']);
                $item->status = '0';
                $item->save();
                 Event::fire(new SendMail('id'));
                return Response::json($item);
            }

这可能是一个错字,但我认为

Event::fire(new SendMail('id'));

必须改成

Event::fire(new SendMail($item->id));

您还可以将整个项目传递给事件构造函数,以避免额外的数据库调用。

Event::fire(new SendMail($item->toArray()));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM