Создание Excel из MySQL и отправка его в виде вложения электронной почты в переполнение стека

Мне нужно отправить электронное письмо с вложением, и этот файл вложений содержит некоторые данные, полученные из базы данных MySQL одновременно.

Эта проблема уже задана и описана Вот но нет никакого рабочего ответа.
Может кто-нибудь есть решение, чем, пожалуйста, ответьте.

   while( $row = mysql_fetch_row( $sqlQuery ) )
{
$line = '';
foreach( $row as $value )
{
if ( ( !isset( $value ) ) || ( $value == "" ) )
{
$value = "\t";
}
else
{
$value = str_replace( '"' , '""' , $value );
$value = '"' . $value . '"' . "\t";
}
$line .= $value;
}
$data .= trim( $line ) . "\n";
}
$data = str_replace( "\r" , "" , $data );

$cho = "$header\n$data";
echo $cho;

$headers = "From:[email protected](PFC Web Admin) \r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: application/vnd.ms-excel";
$headers .= 'Content-Disposition: attachment; filename=Test.xls' . "\r\n";
$headers  .= "Content-Transfer-Encoding: base64\r\n";
$headers  .= "".$cho."\r\n";
$subject = 'Record November';

$mail = mail( '[email protected]', $subject, $msg, $headers );
if( $mail == true )
{
echo "Message successfully sent";
}
else
{
echo "Message could not be sent";
}

Excel создает и имеет правильные данные, но мне нужно отправить это по почте, а не скачать.

0

Решение

Попробуйте это, это работает

<?php
include_once('inc/dbConnect.inc.php');
error_reporting(E_ERROR);
$sql = mysql_query("SELECT * FROM tablename");
$row=mysql_fetch_assoc($sql);
$filename='temp/'.$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 = "hhhhh";

$from_mail = "[email protected]";

$mailto = "[email protected]";

$subject = "This is a mail with attachment.";

$message = "Hi,\r\n do you got attachment?\r\n\r\Hara";

$replyto="[email protected]";
$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."--";

mail($mailto, $subject, "", $header)

?>
1

Другие решения

Я не вижу никаких попыток в вашем коде создать файл Excel или электронное письмо с вложением. Я вижу это как два отдельных вопроса.

Когда дело доходит до вложений электронной почты, лучше всего использовать то, что уже существует, например:

http://swiftmailer.org

или же

https://github.com/Synchro/PHPMailer

(порядок ничего не подсказывает)

Для Excel применимо то же самое, потому что с CSV- или XML-версиями файлов Excel у меня всегда возникают проблемы. У меня нет никаких предложений, хотя. Я нашел этот более общий сайт:

http://webdeveloperplus.com/php/5-libraries-to-generate-excel-reports-in-php/

0

По вопросам рекламы [email protected]