2017-02-03 16 views
0

私は連絡フォームを設定しようとしていますが、すべてうまくいきます。私のコントローラーを - > send()で設定すると、すべて正常に動作します(ちょっと時間がかかります)。私がそれを設定するとき - > queue()、うまく動作するように見える(遅れない)、仕事が設定され、私はディスパッチするときにメールが送られます。しかし今回私のメールテンプレートには、メーラーに送信されたデータは含まれていません。Laravel - キューからデータを送信したときのメールを含まないメール

マイコントローラー:

<?php 

namespace App\Http\Controllers; 
use Illuminate\Http\Request; 
use App\Mail\Contact; 
use Illuminate\Support\Facades\Mail; 

class PagesController extends Controller 
{ 

    public function sendContact(Request $request) 
    { 

     Mail::to('[email protected]') 

      ->queue(new Contact($request)); 

     return redirect('/contact')->with('status', 'Message sent. Thanks!'); 
    } 
} 

私のメーラー(APP \メール\連絡先):

class Contact extends Mailable 
{ 
    use Queueable, SerializesModels; 


    /** 
    * Create a new message instance. 
    * 
    * @return void 
    */ 
    public function __construct() 
    { 


    } 

    /** 
    * Build the message. 
    * 
    * @return $this 
    */ 
    public function build(Request $request) 
    { 
     $subject = 'Web Message from: ' . $request->name; 

     return $this->from('[email protected]') 
      ->subject($subject) 
      ->view('emails.contact-template') 
      ->with([ 
       'name'  =>$request->name, 
       'email' => $request->email, 
       'message' => $request->message, 
       'date'  => $request->date, 
      ]); 
    } 
} 

答えて

0

問題は、私はパブリックとして変数を宣言するために必要なことでした。以下は、最終的にうまくいったソリューションです:

<?php 

namespace App\Mail; 

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

class Contact extends Mailable 
{ 
    use Queueable, SerializesModels; 

    public $request; 
    public $name; 
    public $from; 
    /** 
    * Create a new message instance. 
    * 
    * @return void 
    */ 
    public function __construct(Request $request) 
    { 
     $this->request = $request->all(); 
     $this->name = $request->name; 
    } 

    /** 
    * Build the message. 
    * 
    * @return $this 
    */ 
    public function build() 
    { 

     $subject = 'Webform messsage from: ' . $this->name; 
     $from = '[email protected]'; 

     return $this 
      ->from($from) 
      ->subject($subject) 
      ->view('emails.contact-template'); 

    } 
} 
関連する問題