0

\app\commands\ に cronjobcommand.php を作成しました

public function fire()  {
  $dataArray=tb1::select();
  $dataArray->get();
  foreach($dataArray as $show){
    Mail::send('emails.test', $show, function($message){
        $message->to($show['user_address'], $show['email_content']);
        $message->subject($show['email_subject']);
    });
  }
}

私の見解、test.blade.phpは次のとおりです。

<!DOCTYPE html>
<html lang="en-US">
<head><meta charset="utf-8"></head>
<body>
  <h2>This is testing email. {{{  $dataArray->email_content }}}</h2>
  <div>This is testing email.</div>
</body>
</html>

すべての変数を削除し、電子メール アドレス、内容、および件名をハード コーディングすると機能します。ただし、いくつかの変数を Mail::send..... のセクションに渡すと失敗します。

助けてください

4

3 に答える 3

0

問題は、$show変数がコールバック内で使用できないことです。メール html テンプレートでのみ使用できます。

これを試して;

public function fire()  {
    // Assuming this is the database query
    $dataArray=tb1::select()->get();

    foreach($dataArray as $show){
        $mailData = $show->toArray();

        Mail::send('emails.test', $mailData, function($message) use($show){
            $message->to($show->user_address, $show->email_content);
            $message->subject($show->email_subject);
        });
    }
}
于 2016-04-22T06:19:26.757 に答える
0
$users = DB::table('table')->get();
foreach($dataArray as $show){
Mail::send('emails.test', array('FIELD1'=>$user->FIELD1, 
                                'FIELD2'=>$user->FIELD2),
           function($message) use ($show) {
 $message->to($show->user_address, $show->email_content)
         ->subject($show->email_subject);
});
于 2016-04-28T11:28:30.620 に答える
0

$show実際にデータがあることを確認するために変数をログに記録してから、ログを貼り付けることはできますか。これを試して;

foreach($dataArray as $show) {
    dd($show);

    ... //omitted the rest of the code for brevity
}
于 2016-04-22T07:34:27.590 に答える