2017-08-03 13 views
0

こんにちは私はmailableとキューを使用していましたが、php artisan queue:listenを使用してメールを送信すると、メールが送信されませんでした。私のコンソールにメッセージはありませんでした。私は最初にメールを送ろうとしてからコマンドを使用しましたが、それは私の命令なしで働いていました。そのここですぐに送ることが私のコード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

はIE-のために、そのジョブ に電子メールを送信するためのコードを書き留めハンドル機能に代わりMaillableのと、そのジョブでジョブを使用します。

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

とファイルSendwelcomeEmailがfollowing-たい仕事:

<?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

これはJobsの実装ではなく、デバッグとトレースが非常に簡単です。laravel 5.2以降では、Maill :: class –

関連する問題