私はExcelファイルを作成することができます。それはダウンロードフォルダに保存されます。 正しい件名、本文などでメールを送ることができます。 郵便でExcelファイルが添付されていないので、これで助けてください。mysqli dbからExcelファイルを作成し、このファイルをmail()に追加してください。
編集:AddAttachment()ステートメントは、タグ
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 = '[email protected]';
$email->FromName = 'Name';
$email->Subject = 'PFA excel file';
$email->Body = 'Regards';
$email->AddAddress('[email protected]');
$file_to_attach = $path."\\".$filename;
//echo $path."\\".$filename;
$email->AddAttachment($file_to_attach);
$email->Send();
なぜheader()を呼び出していますか?それは電子メールとは関係ありません。パスと 'addAttachment()'の戻り値を確認する必要があります。 – Synchro
@シンクロヘッダ()は、Excelファイル用です。私はファイルのパスを確認した..それはダウンロードフォルダに保存され、私はちょうどダブルチェックのコードの最後にエコーステートメントをコメントアウトして... AddAttachmentステートメントはfalseを返しています:( –
はい、しかしあなたはドンexcelファイルをブラウザに送信して電子メールで送信しない限り、header()を呼び出す必要はありません。PHPMailerが手渡している電子メールには何の影響もありません。間違っているかパーミッションが足りません。古いPHPMailerの例にコードを基づいていて、古いバージョンを使用している可能性があります。[最新の情報を入手してください] – Synchro