Доброго времени суток! Помогите решить проблему: мне нужно посредством php отправлять письмо с вложенным xlsx документом. Письмо отправляется, успешно приходит, но файл не открывается - пишет, что поврежден или имеет неизвестный формат.
Документ xlsx генируруется перед отправкой письма и сохраняется на сервере, в ручную открывается нормально. т.е. непосредственно в момент отправки что-то с ним происходит. Помогите понять, в чем причина! Надеюсь на вашу помощь!
$file = "/pay/downloads/".$FULLNAME_STUDENT." - ".$today.".xlsx";
$testexcel = $_SERVER["DOCUMENT_ROOT"] . $file;
$to = 'мойемэйл@mail.ru';
$subject = 'тема письма';
$html = 'Это письмо сгенерировано автоматически, отвечать на него не нужно.';
$message = $html;
send_mail($to, $subject, $message, $testexcel, $realname);
function send_mail($to, $subject, $message, $path, $realname)
{
$fp = fopen($path,"r");
if (!$fp)
{
print "Файл $path не может быть прочитан";
exit();
}
$file = fread($fp, filesize($path));
fclose($fp);
$boundary = "--".md5(uniqid(time())); // генерируем разделитель
$headers2 = "MIME-Version: 1.0\n";
$headers2 .='From: support@sait.ru' . "\r\n" .
$headers2 .="Content-Type: multipart/mixed; boundary=\"$boundary\"\n";
$multipart .= "--$boundary\n";
$kod = 'utf-8';
$multipart .= "Content-Type: text/html; charset=$kod\n";
$multipart .= "Content-Transfer-Encoding: Quot-Printed\n\n";
$multipart .= "$message\n\n";
//Блок файла 1
$message_part .= "--$boundary\n";
$message_part .= "Content-Type: application/xls; name=\"".$realname."\"\n\n";
// $message_part .= "Content-Transfer-Encoding: base64\n";
$message_part .= "Content-Disposition: attachment; filename = \"".$realname."\"\n\n";
$message_part .= chunk_split(base64_encode($file))."\n";
//Итоги
$multipart .= $message_part."--$boundary--\n";
if(!mail($to, $subject, $multipart, $headers2)){
echo "К сожалению, письмо не отправлено";
exit();
}
}