Herkese selamlar, laravelde order tamamlandığında mail gönderme işlemi yapıyorum fakat işe yaramıyor. Rota üzerinden gönderebiliyorum hemen geliyor.
Route::get('testmail', function () {
$user = User::find(50);
$order = Order::find(23)
Mail::to($user->email)->send(new \App\Mail\OrderCreated($user, $order));
});
Fakat controllerda order success olmasına ve tüm işlemlerin başarıyla gerçekleşmesine rağmen mail gönderme işlemi gerçekleşmiyor. Bunun sebebi ne olabilir? Acaba event ve listener mi oluşturmalıyım diye düşündüm ama birde notifable sınıfı var hiç kullanmadım. Ne önerirsiniz bu tarz işlemler için? Ayrıca aynı kod şuan test ettiğimde register tarafında çalışıyor, order tarafında çalışmıyor.
// Create Order
$order = Order::create([
'user_id' => $user->id,
'invoice_no' => $charge->invoice->number ?? Str::random(9),
'billing_city' => $user->city ?? null,
'billing_postal_code' => $user->postal_code ?? null,
'billing_country' => $user->country ?? null,
'coupon_id' => session('couponCode') ? Coupon::where('code', session('couponCode'))->first()->id : null,
]);
// Mail gönderimi burada yapılıyor, commit öncesi ve sonrasında deneme yaptım işe yaramadı.
Mail::to($user->email)->send(new OrderCreated($user, $order));
DB::table('user_courses')->lockForUpdate();
DB::commit();
return redirect()->route('success')->with('success', 'Payment completed successfully.');