Laravel 电子邮件附加文本文件而不实际创建文件
Laravel email attach text file without actually creating the file
使用 Laravel,有没有办法在不实际创建文件的情况下将文件附加到电子邮件?意思是,我可以让电子邮件包含一个文本文件附件,而不是实际将文件保存在某个地方并告诉 Laravel 文件的路径,我可以只传递 Laravel 我想要的数据吗包含在文件中?
我认为执行此操作的方法与内存流有关,但我不确定如何实际实现它。
我找到了答案here
只是
$message->attachData($StringValue, "Samplefilename.txt");
我也发现了这个问题,我需要将 csv 文件作为附件发送,而无需将文件写入任何人都可以 public 访问的 public 目录。此方法也可以修改为发送文本文件:
发送 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);
使用 Laravel,有没有办法在不实际创建文件的情况下将文件附加到电子邮件?意思是,我可以让电子邮件包含一个文本文件附件,而不是实际将文件保存在某个地方并告诉 Laravel 文件的路径,我可以只传递 Laravel 我想要的数据吗包含在文件中?
我认为执行此操作的方法与内存流有关,但我不确定如何实际实现它。
我找到了答案here
只是
$message->attachData($StringValue, "Samplefilename.txt");
我也发现了这个问题,我需要将 csv 文件作为附件发送,而无需将文件写入任何人都可以 public 访问的 public 目录。此方法也可以修改为发送文本文件:
发送 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);