2016-07-04 3 views
0

私は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(); 
+0

なぜheader()を呼び出していますか?それは電子メールとは関係ありません。パスと 'addAttachment()'の戻り値を確認する必要があります。 – Synchro

+0

@シンクロヘッダ()は、Excelファイル用です。私はファイルのパスを確認した..それはダウンロードフォルダに保存され、私はちょうどダブルチェックのコードの最後にエコーステートメントをコメントアウトして... AddAttachmentステートメントはfalseを返しています:( –

+0

はい、しかしあなたはドンexcelファイルをブラウザに送信して電子メールで送信しない限り、header()を呼び出す必要はありません。PHPMailerが手渡している電子メールには何の影響もありません。間違っているかパーミッションが足りません。古いPHPMailerの例にコードを基づいていて、古いバージョンを使用している可能性があります。[最新の情報を入手してください] – Synchro

答えて

0

チェックして、以下の偽

// PHPコードを返し、ファイルが存在する場合は、多分あなたは、パス内のエラーを持っている、またはファイルがあります読めない。

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

私はパスとアクセス権をチェックしました..すべてがうまくいきます... ファイルは実行時に作成されるので、何もないのでファイルにアクセスできません。ファイルは存在しませんが、プログラムファイルを実行しています! –

+0

正確に$ filenameというファイルをディスクに保存しますか?行は何ですか? "$ email-> AddAttachment($ file_to_attach);"で添付ファイルを追加したメールが表示され、ファイル名 "$ filename = $ file_name。$ file_ending;"を定義する行が表示されますが、行は表示されませんファイルを保存します。 私のコードでダイメッセージが表示されないことは確かですか? – FOP

+0

それはダイメッセージを一度表示しますが、プログラムを再実行すると、メッセージは表示されません。 –

関連する問題