cronjob任务命令中的邮件方法

时间:2017-04-07 15:53:58

标签: laravel laravel-5.4

您好我尝试从命令发送带有excel文件的电子邮件,但它似乎不起作用

当我尝试运行artisan命令时,我得到此异常:

  

调用未定义的方法Illuminate \ Mail \ PendingMail :: subject()

现在有人如何解决问题?非常感谢提前

这是我的命令:

 public function handle()
 {
     $user = Auth::user();

     $licencies = Licencies::where('lb_assurance' , '=' , 'Lafont')
         ->where('created_at' , Carbon::today())->get();

     $excel_file = Excel::create('DailyRecapLicencesLafont', 
         function($excel) use ($licencies) {
             $excel->sheet('Excel', function($sheet) use ($licencies) {
                $sheet->fromArray($licencies);
             });
          });

        Mail::to($user)
            ->subject('Licences Lafont Daily')
            ->from('test@test.fr')
            ->attach($excel_file , 'LaFontDaily.xls')
            ->send();

        $this->info('Lafont task Done');
    }

1 个答案:

答案 0 :(得分:0)

尝试使用这样的邮件:

Mail::raw('Text to e-mail', function ($m) use ($user, $excel_file) {
    $m->to($user->email);
    $m->subject('Licences Lafont Daily');
    $m->from('test@test.fr');
    $m->attachData($excel_file->string() , 'LaFontDaily.xls');
});

资料来源:laravel 5.1 docs,在很大程度上仍然适用于5.4

不确定$ excel_file是否是内存中的数据,所以如果您之前保存文件并调用它会更好:

 $m->attach($path_to_file , 'LaFontDaily.xls');

旁注:Auth::user()不应在命令中返回任何内容,因此如果在to()函数中使用预定义的电子邮件地址则更好。