sapnawat Ответов: 1

Получение пустого csv файла во вложении электронной почты


Привет,

Используя php я пытаюсь отправить данные таблицы базы данных в формате csv во вложении ниже приведен код, который я пробовал, но я получаю пустой csv-файл во вложении.

Что я уже пробовал:

<?php

$hostname = "localhost";
$username = "root";
$password = "";
$database = "owner";
$conn = mysql_connect($hostname, $username, $password) or die(mysql_error());
$db_selected = mysql_select_db($database, $conn);

$sql = mysql_query("SELECT * FROM bucket");
$row=mysql_fetch_assoc($sql);
$filename='ptp/'.$filename.'.csv';
$fp=fopen($filename,"w");
$seperator="";
$comma="";
foreach($row as $name =>$value)
{
$seperator.=$comma.''.str_replace('','""',$name);
$comma=",";
}
$seperator.="\n";
 $seperator;
fputs($fp,$seperator);
mysql_data_seek($sql,0);
while($row=mysql_fetch_assoc($sql))
{
$seperator="";
$comma="";
foreach($row as $name =>$value)
{
$seperator.=$comma.''.str_replace('','""',$value);
$comma=",";
}
$seperator.="\n";
fputs($fp,$seperator);
}
fclose($fp);
$my_file = $filename.'.csv';
$path = "temp/";
$from_name = "PTP database";
$from_mail = "r.shishodia@99acres.com";
$mailto = "r.shishodia@99acres.com";
$subject = "This is a mail with attachment.";
$message = "Hi,\r\n do you got attachment?\r\n\r\Hara";
$replyto="haraprasad@lemonpeak.com";
$file = $path.$my_file;
    $file_size = filesize($file);
$handle = fopen($file, "r");
$content = fread($handle, $file_size);
fclose($handle);
$content = chunk_split(base64_encode($content));

$uid = md5(uniqid(time()));

$name = basename($file);

 $header = "From: ".$from_name." <".$from_mail.">\r\n";

$header .= "Reply-To: ".$replyto."\r\n";
    $header .= "MIME-Version: 1.0\r\n";

 $header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n";

$header .= "This is a multi-part message in MIME format.\r\n";

$header .= "--".$uid."\r\n";

$header .= "Content-type:text/plain; charset=iso-8859-1\r\n";

$header .= "Content-Transfer-Encoding: 7bit\r\n\r\n";

$header .= $message."\r\n\r\n";
    $header .= "--".$uid."\r\n";

$header .= "Content-Type: application/octet-stream; name=\"".$filename."\"\r\n"; // use different content types here

$header .= "Content-Transfer-Encoding: base64\r\n";

$header .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n";
    $header .= $content."\r\n\r\n";

$header .= "--".$uid."--";

if (mail($mailto, $subject, $message, $header)){
                echo "Mail send";
} else{
                echo "can not send mail";
                }
?>

Richard MacCutchan

Вы проверили, что ваш код действительно генерирует правильные строки в каждом цикле?

1 Ответов

Рейтинг:
1

Chris Copeland

Сразу же я вижу, что ты пишешь на одну дорожку (ptp/filename.csv) но затем пытается снова прочитать содержимое по другому пути (temp/filename.csv).


Richard MacCutchan

Хорошо подмечено, я пропустил это.

sapnawat

Привет, Крис и Ричард, Спасибо за ответ,

Я изменил путь чтения содержимого на (ptp/filename.csv), но снова получил пустой csv-файл.

ZurdoDev

После отладки кода. Все очень просто.