发送成功事件的电子邮件通知

我正在开发一个 Laravel 5.8 API 应用程序,该应用程序需要在用户成功下订单时通知他们。订单流程有效,但我没有收到电子邮件通知。以下是我将如何使用 mailtrap 进行演示


MAIL_DRIVER=smtp

MAIL_HOST=smtp.mailtrap.io

MAIL_PORT=2525

MAIL_USERNAME=**************

MAIL_PASSWORD=**************

MAIL_ENCRYPTION=tls

在订单模型中,我使用了可通知特征


<?php


namespace App;


use App\User;

use App\Product;

use Illuminate\Notifications\Notifiable;


use Illuminate\Database\Eloquent\Model;


class Order extends Model

{

    use Notifiable;


    ...

}

创建OrderSuccesful通知并OrderController像这样在商店方法中使用它


<?php


...


use App\Notifications\OrderSuccessful;


use App\Order;

use Illuminate\Http\Request;


class OrderController extends Controller

{

    public function store(Request $request, Product $product)

    {

        // create order

        $order = Order::create([

            'user_id'       => auth()->user()->id,

            'product_id'    => $product->id,

            'barrels'       => $request->barrels,

            'status'        => 'successful'

        ]);


        $user = auth()->user();


        // notify user of successful order

        $user->notify(new OrderSuccessful($order));


        return new OrderResource($order);

    }

}

现在,当我成功下单时,我没有收到通知。由于我是第一次使用通知,我想知道我错过了什么。如果有人能指出这一点并告诉我如何解决它,我将不胜感激。


猛跑小猪
浏览 144回答 1
1回答

呼如林

在这里,您需要将Notifiable特征添加到User模型而不是Order.在 User.phpclass User extends Authenticatable{&nbsp; &nbsp; use Notifiable;&nbsp; &nbsp; //}OrderSuccessful使用artisan以下方法创建通知类:php artisan make:notification OrderSuccessful在OrderSuccessful课堂上:protected $order;public function __construct(App\Order $order){&nbsp; &nbsp; $this->order = $order;}设置完上述所有内容后,您现在应该可以使用以下代码触发电子邮件:$user->notify(new OrderSuccessful($order));笔记:确保您的users表格中有一个email字段,其中包含正确的电子邮件地址。希望能帮助到你!
打开App,查看更多内容
随时随地看视频慕课网APP