我发现了很多如何创建csv并将其作为附件发送的示例。所有这些示例都将文件上传到服务器上。是否有一种方法可以发送没有上传的csv,以便直接作为附件发送?
你可以尝试使用addStringAttachment
见:https://phpmailer.github.io/PHPMailer/classes/PHPMailer-PHPMailer-PHPMailer.html method_addStringAttachment
当然有!制作CSV文件的方法有很多种,但最基本的方法非常简单:
$data = [
['id', 'name', 'colour'],
[1, 'Fred', 'blue'],
[2, 'Jane', 'orange'],
[3, 'Hassan', 'purple'],
];
$csv = fopen('file.csv', 'wb');
foreach($data as $line) {
fputcsv($csv, $line);
}
fclose($csv);
//then later on, to send it with PHPMailer
$mail->addAttachment('file.csv');
当然,数据可以来自任何地方——数据库、计算、远程web服务等等。
您可以使用输出缓冲来捕获fputcsv
输出的CSV字符串,并将其直接传递给addStringAttachment
,这意味着您甚至不需要在发送之前将文件写入磁盘。