生成CSV文件并通过电子邮件laravel直接发送
Halo伙计们,我是拉威尔的新人。我现在正在使用laravel 6。现在我正在生成CSV文件并通过电子邮件发送 问题是:生成CSV文件并通过电子邮件laravel直接发送,laravel,csv,email,Laravel,Csv,Email,Halo伙计们,我是拉威尔的新人。我现在正在使用laravel 6。现在我正在生成CSV文件并通过电子邮件发送 问题是: 我仍然不知道如何生成CSV文件并将其放入服务器文件夹。假设我想将CSV文件保存到我的服务器文件夹public/export中/ 如何通过电子邮件发送并生成CSV文件 这就是我所做的 $reports = User::all()->get(); $rows = []; foreach ($reports as $key =&
$reports = User::all()->get();
$rows = [];
foreach ($reports as $key => $value) {
$rows[$key]['id'] = $value->social_media_id;
$rows[$key]['name'] = $value->name;
$rows[$key]['address'] = $value->address;
$rows[$key]['phone'] = $value->phone;
}
$fileName = 'file.csv';
$headers = [
"Content-type" => "text/csv",
"Content-Disposition" => "attachment; filename=" . $fileName,
"Pragma" => "no-cache",
"Cache-Control" => "must-revalidate, post-check=0, pre-check=0",
"Expires" => "0"
];
$columnNames = [
'ID',
'name',
'address',
'phone'
];
$callback = function() use ($columnNames, $rows ) {
$file = fopen('php://output', 'w');
fputcsv($file, $columnNames);
foreach ($rows as $row) {
fputcsv($file, $row);
}
fclose($file);
};
return response()->stream($callback, 200, $headers));
如何修改此代码以将生成的CSV文件存储在我的服务器文件夹public/export/
那么我如何通过电子邮件发送呢
请给我一些建议
$reports=User::all()->get();
$fileName='file.csv';
$columnNames=[
“ID”,
“姓名”,
"地址",,
“电话”
];
$file=fopen('public/export/'。$fileName,'w');
fputcsv($file,$columnNames);
foreach($reports作为$report报告){
fputcsv($文件[
$report->id,
$report->name,
$report->address,
$report->phone,
]);
}
fclose($文件);
邮件::发送('your.email.blade.layout',[],函数($message)使用($fileName)
{
$message->to($message)example@gmail.com“)->主题(“CSV电子邮件”);
$message->attach('public/export/'。$fileName);
});
但是,如果您将通过mailable类(docs:)发送,则会更好
另外,不要忘记您没有唯一的文件名,因此每次都会被覆盖
$reports=User::all()->get();
$fileName='file.csv';
$columnNames=[
“ID”,
“姓名”,
"地址",,
“电话”
];
$file=fopen('public/export/'。$fileName,'w');
fputcsv($file,$columnNames);
foreach($reports作为$report报告){
fputcsv($文件[
$report->id,
$report->name,
$report->address,
$report->phone,
]);
}
fclose($文件);
邮件::发送('your.email.blade.layout',[],函数($message)使用($fileName)
{
$message->to($message)example@gmail.com“)->主题(“CSV电子邮件”);
$message->attach('public/export/'。$fileName);
});
但是,如果您将通过mailable类(docs:)发送,则会更好
另外,不要忘记您没有唯一的文件名,因此每次都会被覆盖。找到了吗?还是没有解决问题?找到了还是没有解决问题
$reports = User::all()->get();
$fileName = 'file.csv';
$columnNames = [
'ID',
'name',
'address',
'phone'
];
$file = fopen('public/export/' . $fileName, 'w');
fputcsv($file, $columnNames);
foreach ($reports as $report) {
fputcsv($file, [
$report->id,
$report->name,
$report->address,
$report->phone,
]);
}
fclose($file);
Mail::send('your.email.blade.layout', [], function($message) use ($fileName)
{
$message->to('example@gmail.com')->subject('CSV email');
$message->attach('public/export/' . $fileName);
});