发送成功事件的电子邮件通知
Sending email notification on successful event
我正在开发一个 Laravel 5.8 API 应用程序,需要在用户成功下订单时通知他们。订购流程有效,但我没有收到电子邮件通知。以下是我使用 mailtrap 进行演示的方法
MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=**************
MAIL_PASSWORD=**************
MAIL_ENCRYPTION=tls
在 Order 模型中,我使用了通知特征
<?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);
}
}
现在当我下单成功时,我没有收到通知。由于我是第一次使用通知,所以我想知道我错过了什么。如果有人可以指出并告诉我如何解决它,我将不胜感激。
这里你需要将 Notifiable
trait 添加到 User
模型而不是 Order
.
在User.php
class User extends Authenticatable
{
use Notifiable;
//
}
创建 OrderSuccessful
通知 class 使用 artisan
:
php artisan make:notification OrderSuccessful
在OrderSuccessful
class:
protected $order;
public function __construct(App\Order $order)
{
$this->order = $order;
}
设置完上述所有内容后,您现在应该可以使用以下代码触发电子邮件:
$user->notify(new OrderSuccessful($order));
注意:
确保您的 users
table 有一个包含正确电子邮件地址的 email
字段。
希望对您有所帮助!
我正在开发一个 Laravel 5.8 API 应用程序,需要在用户成功下订单时通知他们。订购流程有效,但我没有收到电子邮件通知。以下是我使用 mailtrap 进行演示的方法
MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=**************
MAIL_PASSWORD=**************
MAIL_ENCRYPTION=tls
在 Order 模型中,我使用了通知特征
<?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);
}
}
现在当我下单成功时,我没有收到通知。由于我是第一次使用通知,所以我想知道我错过了什么。如果有人可以指出并告诉我如何解决它,我将不胜感激。
这里你需要将 Notifiable
trait 添加到 User
模型而不是 Order
.
在User.php
class User extends Authenticatable
{
use Notifiable;
//
}
创建 OrderSuccessful
通知 class 使用 artisan
:
php artisan make:notification OrderSuccessful
在OrderSuccessful
class:
protected $order;
public function __construct(App\Order $order)
{
$this->order = $order;
}
设置完上述所有内容后,您现在应该可以使用以下代码触发电子邮件:
$user->notify(new OrderSuccessful($order));
注意:
确保您的 users
table 有一个包含正确电子邮件地址的 email
字段。
希望对您有所帮助!