2017-08-03 24 views
0

你好,我正在使用mailable和使用隊列,但當我使用php artisan queue:listen併發送郵件它沒有像它本應該做的那樣工作,我確實收到了mailtrap上的郵件,但那裏在我的控制檯中沒有消息。我試着先發送郵件,然後使用我的命令,但它沒有我的命令。並且它並不需要一段時間,因爲它直接發送這裏是我的代碼laravel隊列不像以前那樣工作

Controller.php這樣

use Illuminate\Support\Facades\Mail; 
use App\Mail\testmail; 

class Controller extends Controller{ 
    public function email($email, Request $request){ 
     $emailuser = $request->input('email'); 
     $message = $request->input('bericht'); 
     mail::to($email)->queue(new testmail($emailuser, $message)); 
    } 
} 

testmail.php

<?php 

namespace App\Mail; 

use Illuminate\Bus\Queueable; 
use Illuminate\Mail\Mailable; 
use Illuminate\Queue\SerializesModels; 
use Illuminate\Contracts\Queue\ShouldQueue; 

class testmail extends Mailable 
{ 
    use Queueable, SerializesModels; 

    public $emailuser; 
    public $message; 
    /** 
    * Create a new message instance. 
    * 
    * @return void 
    */ 
    public function __construct($emailuser, $message) 
    { 
     $this->emailuser = $emailuser; 
     $this->message = $message; 

    } 

    /** 
    * Build the message. 
    * 
    * @return $this 
    */ 
    public function build() 
    { 
     return $this->markdown('email.mail'); 
    } 
} 

mail.blade.php

@component('mail::message') 
{{ $emailuser }} 
{{ $message }} 


Thanks,<br> 
{{ config('app.name') }} 
@endcomponent 

沒有人知道如何解決這個問題,因爲我需要它延遲我的應用程序

回答

-1

使用的工作,而不是Maillable並在手柄功能的工作寫下代碼發送電子郵件在工作 爲即 - :

$job = (new SendWelcomeEmail($activation->code,$user))->onQueue('default'); 

和作業文件SendwelcomeEmail想以下事項:

<?php 

    namespace App\Jobs; 

    use Illuminate\Bus\Queueable; 
    use Illuminate\Queue\SerializesModels; 
    use Illuminate\Queue\InteractsWithQueue; 
    use Illuminate\Contracts\Queue\ShouldQueue; 
    use Illuminate\Foundation\Bus\Dispatchable; 
    use App\Jobs\Job; 
    use Mail; 


class SendWelcomeEmail extends Job implements ShouldQueue 
{ 
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; 

/** 
* Create a new job instance. 
* 
* @return void 
*/ 
protected $activation_code; 
protected $user; 
public function __construct($activation_code,$user) 
{ 

    $this->activation_code=$activation_code; 
    $this->user=$user; 

} 

/** 
* Execute the job. 
* 
* @return void 
*/ 
public function handle() 
{ 
    try{ 
    $user=$this->user; 
    Mail::send('emails.user.register', ['activation_code' => $this->activation_code,'user'=>$this->user], function ($m) use ($user) { 
        $m->to($user->email,$user->first_name." ".$user->last_name) 
         ->subject(trans('emails.USER_REGISTER_SUBJECT',['project'=>trans('project.project_name')])); 
       }); 
     \Log::useDailyFiles(storage_path().'/logs/user-registration/success/'.date('Y-m-d').'.log'); 
     \Log::info('Welcome Email Send to-:'.$user->email); 
    }catch(Exception $ex){ 
     \Log::useDailyFiles(storage_path().'/logs/user-registration/error/'.date('Y-m-d').'.log'); 
     \Log::error($ex->getMessage()); 
     \Log::error("Line Number->".$ex->getLine()); 
    } 
} 
} 
+0

這不是回答OP的問題,而是像變通辦法一樣,沒有什麼是真正的罪魁禍首的麻煩。 –

+0

這不是一個工作,這是喬布斯的實現,這樣就很容易調試和跟蹤,因爲從laravel 5.2開始,你不能直接使用Maill :: queue()而不需要一個maillable類或工作 –

相關問題