我想我接近了,我只需要在邮件中传递$excelFile,但它一直说它未定义,然而当我传递$truckstop_post时,它通过了,但数据没有正确格式化,因为它还没有通过Excel::create。如何将\Excel::create的结果导入Mail::send??
public function truckstopPost()
{
$type = 'csv';
$truckstop_post = Loadlist::select('pick_city', 'pick_state', 'delivery_city', 'delivery_state', 'trailer_type', 'pick_date', 'load_type', 'length', 'width', 'height', 'weight', 'offer_money', 'special_instructions', 'company_contact', 'contact_phone')->where('urgency', 'OPEN')->orderBy('id', 'desc')->get();
$excelFile = \Excel::create('itransys', function($excel) use ($truckstop_post) {
$excel->sheet('mySheet', function($sheet) use ($truckstop_post)
{
$sheet->fromArray($truckstop_post);
});
$info = Load::find(8500);
$info = ['info'=>$info];
Mail::send(['html'=>'email.invoice_email_body'], $info, function($message) use ($info, $excelFile){
$message->to('mike@gmail.com')->subject('subject');
$message->from('mike@gmail.com', \Auth::user()->name);
$message->attachData($excelFile, 'Invoice.csv');
});
});
return back()->with('status', 'You Posted Truckstop!');
}
这就是我将$truckstop_post传递给attachData()的结果,当然这不是一个格式很好的csv文件
3条答案
按热度按时间lpwwtiir1#
你可以这样做
Excel::raw()
方法创建/写入临时文件,然后获取其内容并在删除该文件后删除。如果你使用的是laravel,第二个解决方案会是这样的:
Excel::download()
返回一个BinaryFileResponse
,这就是为什么它不能直接工作,但你可以抓取文件。b4qexyjb2#
c2e8gylq3#
从Laravel 9开始,可以在Mailable类中使用
attachments()
方法: