Need help. Форма отправки E-mail с прикрепленным файлом

-Мерзкий-

Новичок
Need help. Форма отправки E-mail с прикрепленным файлом

Подскажите идею или движек может кто такой может показать, или просто ссылку где про это почитать:
Нужно чтобы форма отправки E-mail с сайта администратору позволяла прикрепить файл.
 

Popoff

popoff.donetsk.ua
-Мерзкий-
Готовой функции для решения твоей задачи не существует.
 

-Мерзкий-

Новичок
Гравицапа
Большое СПАСИБО!Данная статья мне многое разъяснила!

P.S.
Для тех кто может, еще сталкнется с этой проблемой:
http://phpmailer.sourceforge.net/
Готовый многофункциональный движок!

-~{}~ 25.09.06 14:23:

Еще вопросик:



<?php
function XMail( $from, $to, $subj, $text, $filename) {
$f = fopen($filename,"rb");
$un = strtoupper(uniqid(time()));
$head = "From: $from\n";
$head .= "To: $to\n";
$head .= "Subject: $subj\n";
$head .= "X-Mailer: PHPMail Tool\n";
$head .= "Reply-To: $from\n";
$head .= "Mime-Version: 1.0\n";
$head .= "Content-Type:multipart/mixed;";
$head .= "boundary=\"----------".$un."\"\n\n";
$zag = "------------".$un."\nContent-Type:text/html;\n";
$zag .= "Content-Transfer-Encoding: 8bit\n\n$text\n\n";
$zag .= "------------".$un."\n";
$zag .= "Content-Type: application/octet-stream;";
$zag .= "name=\"".basename($filename)."\"\n";
$zag .= "Content-Transfer-Encoding:base64\n";
$zag .= "Content-Disposition:attachment;";
$zag .= "filename=\"".basename($filename)."\"\n\n";
$zag .= chunk_split(base64_encode(fread($f,filesize($filename))))."\n";

return @mail("$to", "$subj", $zag, $head);
}
?>
-----------------------------------------
Данная функция отправляет письмо со вложенным файлом,только файл приходит пустым.
С чем это может быть связано?
 

Фанат

oncle terrible
Команда форума
есть. та же самая ссылка.
мне ещё тебя поуговаривать, или ты займёшься, наконец, своими проблемами?
 

Фанат

oncle terrible
Команда форума
только файл приходит пустым.
С чем это может быть связано?
скажи, а у тебя самого, НИКАКИХ идей на тему с чем это может быть связано? может быть, какая-то гипотеза, всё же, есть?
 

-Мерзкий-

Новичок
Вообще я разобрался.
Фанат
Без смеха выражаю тебе огромное спасибо, потому что нормально почитав статью которую ты дал по ссылке, я узнал кое-что новое и понял в чем проблемма. Проблемма заключалась в отсутствии знаний принципа работы передачи файла от формы в HTML к сценарию.
Оказалось что
переменную $filename нужно просто получать из формы и сразу передавать, а я то ее и так
$filename=$_FILES['filename'];
и эдак
$filename = trim($_POST['filename']);
вообщем не суть!
Спасибо за помощь и внимание. Буду дочитывать статью. Мало ли там еще и про HTML чего интерестного пишут))))

-~{}~ 25.09.06 16:00:

P.P.S
Теперь файл приходит не пустой, только название и расширение он имеет temp`овское...(phpBk7ikZ.dat)
Последний вопрос:
Может кто знает что придумать на замену
basename($filename), чтоб получать значение имени отправляемого файла?

(В качестве параметров формы установлено
method="POST" enctype="multipart/form-data")
 

Фанат

oncle terrible
Команда форума
придумывать ничего не надо.
нужно просто один раз пробежать глазами раздел про заливку файлов в документации, и указать нужную переменную

-~{}~ 25.09.06 16:03:

ну или хотя бы выполнить рекомендацию из ссылки, что я приводил выше
 

-Мерзкий-

Новичок
Вроде все делаю правильно, а файл приходит с именем kbg.dat

$real_name = $_FILES['filename']['name'];
function XMail( $from, $to, $subj, $text, $filename) {
$f = fopen($filename,"rb");
$un = strtoupper(uniqid(time()));
$head = "From: $from\n";
$head .= "To: $to\n";
$head .= "Subject: $subj\n";
$head .= "X-Mailer: PHPMail Tool\n";

$head .= "Mime-Version: 1.0\n";
$head .= "Content-Type:multipart/mixed;";
$head .= "boundary=\"----------".$un."\"\n\n";
$zag = "------------".$un."\nContent-Type:text/html;\n";
$zag .= "Content-Transfer-Encoding: 8bit\n\n$text\n\n";
$zag .= "------------".$un."\n";
$zag .= "Content-Type: application/octet-stream;";
$zag .= "name=\"".$real_name."\"\n";
$zag .= "Content-Transfer-Encoding:base64\n";
$zag .= "Content-Disposition:attachment;";
$zag .= "filename=\"".$real_name."\"\n\n";
$zag .= chunk_split(base64_encode(fread($f,filesize($filename))))."\n";

return @mail("$to", "$subj", $zag, $head);
}


XMail($email,"[email protected]",$out,$body,$filename);


Подскажите ошибку!?
 

-Мерзкий-

Новичок
В мыле получелось temp`овское имя jkgfk.dat
Щас разобрался. Долго тупил...
Переменная $real_name = $_FILES['filename']['name']; до функции стоит...
Осталось разобраться с кодировкой.
 
Сверху