0
我一直試圖解決郵件隊列郵件幾天,但仍然找不到解決方案。 請大家看我的控制器,工作,郵件Laravel 5.3提交數據後郵件未發送至隊列作業
控制器
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Contact;
use App\Jobs\SendEmail;
class MailController extends Controller
{
public function getContact(){
return view ('mail');
}
public function postContact(Request $request){
$contact = new Contact;
$contact->email = $request['email'];
$contact->name = $request['name'];
$contact->subject = $request['subject'];
$contact->save();
dispatch(new SendEmail($contact));
return back();
}
}
工作
<?php
namespace App\Jobs;
use App\Contact;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Contracts\Mail\Mailer;
Use App\Mail\EmailContact;
class SendEmail implements ShouldQueue
{
use InteractsWithQueue, Queueable, SerializesModels;
public $contact;
public function __construct(Contact $contact)
{
$this->contact = $contact;
}
public function handle(Mailer $mailer)
{
$email = new EmailContact($this->contact);
$mailer->to($this->contact->email)->send($email);
}
}
郵件
<?php
namespace App\Mail;
use App\Contact;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
class EmailContact extends Mailable
{
use Queueable, SerializesModels;
public $contact;
public function __construct(Contact $contact)
{
$this->contact = $contact;
}
public function build()
{
return $this->view('emails.contact')->with([
'email' => $this->contact->email,
'name' => $this->contact->name,
'subject' => $this->contact->subject,
]);
}
}
之後,我加入PHP的工匠隊列:工作 但結果仍然與使用SEND相同。 我的編碼有問題嗎?
嗨,謝謝,我終於解決了這個問題。在我的.env文件中,我的QUEUE_DRIVER =數據庫。我檢查dd(config('queue.default'));它的輸出仍然是同步的。所以我清除緩存的PHP工匠配置:清除,最後它的作品!我真的需要在我的郵寄課程中實施ShouldQueue。因爲沒有實現它,它仍然可以工作 –
你好,我注意到你已經在你的工作類中實現了'ShouldQueue'。因此,它應該在您發送作業而不是直接發送郵件時工作。但是您甚至可以直接從您的控制器調用郵件,在這些情況下您可能需要實施它。 – Sandeesh