使用Laravel,有没有办法将文件附加到电子邮件而不实际创建文件?这意味着,我可以将电子邮件包含在文本文件附件中,而不是实际将文件保存到某个地方并告诉Laravel文件的路径,我是否可以只传递Laravel我想要包含在文件中的数据?
我认为这样做的方法与内存流有关,但我不确定如何实现它。
答案 0 :(得分:6)
答案 1 :(得分:1)
我也发现了这个问题,我需要将csv文件作为附件发送而不将文件写入公共目录,任何人都可以公开访问它。可以修改此方法以发送文本文件:
发送一个txt文件:
$filename = 'launch_codes.txt';
$file = fopen('php://temp', 'w+');
fwrite($file,"nuclear_arsenal: swordfish");
rewind($file);
Mail::send('emails.launch_codes', [], function($message) use($file, $filename)
{
$message->to('please_not_trump@not-that-secure.gov')
->subject('Confidential Data');
$message->attachData(stream_get_contents($file), $filename);
});
fclose($file);
发送csv文件:
$filename = 'launch_codes.csv';
$file = fopen('php://temp', 'w+');
$column_headers = ['Weapon', 'Launch Code'];
fputcsv($file, $column_headers);
fputcsv($file, [
'nuclear_arsenal','swordfish'
]);
rewind($file);
Mail::send('emails.launch_codes', [], function($message) use($file, $filename)
{
$message->to('please_not_trump@not-that-secure.gov')
->subject('Confidential Data');
$message->attachData(stream_get_contents($file), $filename);
});
fclose($file);