Для передачи файлов используется параметр "boundary" и Content-Type: multipart/mixed. Этот параметр уникальный и разбивает Далее текст письма на несколько писем, при этом преобразуя часть текста в хеадеры. Важно: после хеадеров обязательно 2 перевода строки.
$to = 'test@example.com';
$subject = 'Анкета';
$bound = "vckdelemail";
$header="From: 'site' \n";
$header.="To: $to\n";
$header.="Subject: $subject\n";
$header.="Mime-Version: 1.0\n";
$header.="Content-Type: multipart/mixed; boundary=\"$bound\"\n\n";
$body="--$bound\n";
$body.="Content-type: text/html; charset='windows-1251'\n";
$body.="Content-Transfer-Encoding: quoted-printable\n\n";
// $body.=base64_decode(base64_encode($file))."\n";
$body.="Анкета полностью заполнена и отправлена на почту.\n\n";
// $file=fopen($file_name,"rb");
$body.="--$bound\n";
$body.="Content-Type: \"application/octet-stream;\"";
$body.="name=\"".basename('anketa.xls')."\"\n";
$body.="Content-Transfer-Encoding:base64\n";
$body.="Content-Disposition:attachment;";
$body.="filename=\"".basename('anketa.xls')."\"\n\n";
$body.=chunk_split(base64_encode($file))."\n";
$body.="$bound--\n\n";
if(mail($to, $subject, $body, $header)) {
echo "
Свежие комментарии