从mysqli db创建excel文件,并将该文件附加到mail()中



我可以创建excel文件,它保存在下载文件夹中。我可以用正确的主题、正文等发送邮件。邮件中没有附上excel文件,请帮助我解决这个问题。

编辑:addatattachment()语句返回false

//下面的php代码

include 'PHPExcel.php';
require_once ("C:\xampp\htdocs\excel_mailer\PHPMailer-master\class.phpmailer.php");
$path           =   "C:\Users\Manish\Downloads";
$file_name      =   $_GET['file_name'];
$DB_server      =   "localhost";
$DB_username    =   "root";
$DB_password    =   "";
$DB_dbname      =   "timetracker";
$DB_tablename   =   "tt_users";
$conn           =   mysqli_connect ($DB_server, $DB_username, $DB_password, $DB_dbname);
if (mysqli_connect_errno()) {
    die ("Connection Failed!");
}
$sql    =   "SELECT *";
$sql    .=  " FROM $DB_tablename";
if ($result = mysqli_query($conn,$sql));
else die("Couldn't execute query:<br />" . mysqli_error(). "<br />" . mysqli_errno());
$file_ending = ".xls";
$filename = $file_name.$file_ending;
header("Content-Type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=$filename");

/*******Start of Formatting for Excel*******/
$sep        = "t"; //tabbed character
$flag       = true;
$col_names  = "";
while($row = mysqli_fetch_assoc($result)) {
    $data_insert    = "";
            foreach($row as $field=>$data) {
        if ($flag)
            $col_names      .= $field.$sep;
        if(!isset($data))
            $data_insert    .= "NULL".$sep;
        elseif ($data != "")
            $data_insert    .= $data.$sep;
        else
            $data_insert    .= "".$sep;
    }
    if ($flag) {
        $flag       = !$flag;
        $col_names  .= "t";
        echo (trim($col_names));
        echo "n";
    }
    $data_insert    .= "t";
    echo (trim($data_insert));
    echo "n";
}
$email = new PHPMailer();
$email->From      = 'somevalid@email.address';
$email->FromName  = 'Name';
$email->Subject   = 'PFA excel file';
$email->Body      = 'Regards';
$email->AddAddress( 'somevalid@email.address' );
$file_to_attach = $path."\".$filename;
//echo $path."\".$filename;
$email->AddAttachment( $file_to_attach );
$email->Send();

检查文件是否存在,可能是路径错误,或者文件不可读。

$file_to_attach = $path."\".$filename;    
if (!file_exists ( $file_to_attach ) die ("File $file_to_attach not readable");    
else $email->AddAttachment( $file_to_attach );

最新更新