从 MySQL 数据库创建 CSV 并附加到 PHPMailer 电子邮件
Create CSV from MySQL database and attach to PHPMailer email
我正在尝试制作一个 php 文件,该文件将创建我的数据库的 CSV 文件并将其附加到将自动发送的 PHPMailer 电子邮件中。该文件将位于 raspberry pi 上的网络服务器上。我得到了创建 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 版本,以便您可以使用 PHP邮寄者6.x.
您要在发送之前删除要发送的文件。 addAttachment
存储文件的详细信息,但不存储文件的内容,在实际发送之前不会读取文件的内容。因此,将 unlink
调用移到 之后 您的 send
调用。
我正在尝试制作一个 php 文件,该文件将创建我的数据库的 CSV 文件并将其附加到将自动发送的 PHPMailer 电子邮件中。该文件将位于 raspberry pi 上的网络服务器上。我得到了创建 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 版本,以便您可以使用 PHP邮寄者6.x.
您要在发送之前删除要发送的文件。 addAttachment
存储文件的详细信息,但不存储文件的内容,在实际发送之前不会读取文件的内容。因此,将 unlink
调用移到 之后 您的 send
调用。