从MySQL数据库创建CSV并附加到PHPMailer电子邮件



我正在尝试制作一个php文件,该文件将创建我的数据库的CSV文件,并将其附加到将自动发送的PHPMailer电子邮件中。该文件将在树莓派的网络服务器上。我得到了创建CSV文件并单独发送电子邮件的文件,但没有将CSV附加到电子邮件并正确发送。如有任何帮助,我们将不胜感激!这是迄今为止的代码:

<?php
require("connect2.php");
$filename = "hoursandpay.csv";
header('HTTP/1.1 200 OK');
header('Content-Type: text/csv; charset=utf-8');  
header('Content-Disposition: attachment; filename=$filename');  
header('Cache-Control: no-cache, no-store, must-revalidate');
header('Pragma: no-cache');
header('Expires: 0');
$output = fopen($filename, 'w');  
fputcsv($output, array('ID', 'PIN', 'FNAME', 'LNAME', 'DATE'));  
$query = "SELECT * FROM hoursandpay ORDER BY DATE DESC";  
$result = mysqli_query($conn, $query);  
while($row = mysqli_fetch_assoc($result))  
{  
fputcsv($output, $row);  
} 
require_once('PHPMailer_5.2.0/class.phpmailer.php');
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->SMTPSecure = 'ssl';
$mail->Host = "smtp.gmail.com";
$mail->Port = 465;
$mail->Username = "XXXXX@gmail.com";
$mail->Password = "XXXXXXXX";
$mail->SetFrom('XXXXXX@gmail.com', 'Test123');
$mail->Subject = "Hours and Pay CSV File";
$mail->MsgHTML('Hi! <br><br> Here is the Hours and Pay datatable. 
<br><br> Thanks!');
$mail->AddAddress('XXXXX@gmail.com', 'Test User');
$mail->AddAttachment($filename);
unlink($filename);
$mail->Send();
fclose($output); 
?>

您使用的是PHPMailer的旧版本,即使在rpi上,您也应该运行足够新的PHP版本,以便使用PHPMailer6.x。

您正在删除要在发送之前发送的文件。addAttachment存储文件的详细信息,但不存储其内容,在实际发送之前不会读取该内容。因此,在您的send调用之后,将unlink调用移动到

最新更新