![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
|
|||||
|
Уважаемые знатоки!!!
Подскажите может ли функция mail отправлять файлы??? Короче есть простая форма отправки анкет, нужно добавить вложение файла.
__________________
Кто последний тот и папа!!! |
|
|||||
|
Ветеран форума
|
да может...
__________________
... |
|
|||||
|
А как это реализовать?
Я вставляю ХТМЛ тэг, который указывает расположение файла. А потом в функции майл указываю его имя как обычную переменную?
__________________
Кто последний тот и папа!!! |
|
|||||
|
Регистрация: Jun 1999
Адрес: Russia, Samara
Сообщений: 1,138
|
Hi !
Проще всего взять какой-нибудь готовый класс :) например стандартный MIME.class из аттача тогда если попытаться отправить скажем file.zip будет что-то вроде <? $file_name = "file.zip"; $file_description = "test file"; $mail_from = "from@e-mail.com"; $mail_to = "to@e-mail.com"; $subject = "Hello!"; $message = "Just testing"; $type = "application/x-zip"; $file_pointer = fopen ($file_name, "r"); $file_contents = fread ($file_pointer, filesize ($file_name)); fclose ($file_pointer); include "MIME.class"; $mime = new MIME_mail($mail_from, $mail_to, $subject, $message); $mime->fattach($file_contents, $file_description, $type, $file_name); $mime->send_mail(); ?> PS давненько что-то меня тут не было :) Последний раз редактировалось Ilya; 06.07.2002 в 01:37. |
|
|||||
|
Ув. Илья!
Привет!!! Подсказал капитально, но вопрос требует продолжения! =) Мне нужно что бы файл не указывался явным образом, а подставлялся с помощью <input type="file" name="file"> Подскажи пожалуйста!!!
__________________
Кто последний тот и папа!!! |
|
|||||
|
Регистрация: Jun 1999
Адрес: Russia, Samara
Сообщений: 1,138
|
HI !
Ну тогда можно сказать что-то вроде <?
if ($userfile) {
$file_name = $HTTP_POST_FILES['userfile']['name'];
$type = $HTTP_POST_FILES['userfile']['type'];
$file_description = "test file";
$mail_from = "from@e-mail.com";
$mail_to = "to@e-mail.com";
$subject = "Hello!";
$message = "Just testing";
$file_pointer = fopen ($userfile, "r");
$file_contents = fread ($file_pointer, filesize ($userfile));
fclose ($file_pointer);
include "MIME.class";
$mime = new MIME_mail($mail_from, $mail_to, $subject, $message);
$mime->fattach($file_contents, $file_description, $type, $file_name);
$mime->send_mail();
echo "file send";
} else {?>
<FORM ENCTYPE="multipart/form-data" METHOD=POST>
<INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="1000">
Send this file: <INPUT NAME="userfile" TYPE="file">
<INPUT TYPE="submit" VALUE="Send File">
</FORM>
<?}?>
PS Только не советую использовать встроенную поддержку аплоада в PHP - опасно это.. Через одну такую форму сервер можно повалить по счету раз.. |
|
|||||
|
Привет!
Все равно не работает. Если мы к примеру пытаемся отправить файл autoexec.bat c диска C:\ то пишет: Warning: fopen("\\php2","r") - Unknown error in f:\www\file.php3 on line 10 Warning: Unable to find file identifier 0 in f:\www\file.php3 on line 11 Warning: Unable to find file identifier 0 in f:\www\file.php3 on line 12
__________________
Кто последний тот и папа!!! |
|
|||||
|
Регистрация: Jun 1999
Адрес: Russia, Samara
Сообщений: 1,138
|
Hi !
значит просто сервер не настроен или неправильно прописана upload_tmp_dir в php.ini ![]() А вообще если кто забыл, то у меня дурацкая привычка есть проверять как работает, перед тем как говорить ![]() |
|
|||||
|
Привет!
Илья ну если уж начали такую тему, давай попробуем закончить =) Что мне нужнл прописать в php.ini или какой каталог указать для upload ??? Если можешь покажи свои настройки, меня интересуют только касающиеся отправки файлов. Еще там вот у тебя функции: $file_pointer = fopen ($userfile, "r"); $file_contents = fread ($file_pointer, filesize ($userfile)); 1. Зачем открывать файл??? 2. У нас же переменная $userfile равна не какому то файлу, а полному пути к файлу, включая диски и директории. Если не сложно, помоги пожалуйста разобраться, ну сильно уж надо сделать такую форму!!!
__________________
Кто последний тот и папа!!! |
|
|||||
|
Регистрация: Jun 1999
Адрес: Russia, Samara
Сообщений: 1,138
|
Hi !
Ну раз так, тогда и я не понимаю зачем что-то делать под win32 ? Или это не для реальных задач а только в целях изучения ? Ну а если изучения, то под windows все намного сложнее. Во первых нету родных нормальных средств отправки почты. По моему самое человеческое что можно найти это Advanced Direct Remailer, но его нужно ставить отдельно. Во вторых большинство версий php для win32 имеет массу проблем с автоматическим удалением временных файлов созданных при аплоаде, поэтому на них лучше на всякий случай вручную натравливать сначала move_uploaded_file , а потом unlink. В третьих в переменную $userfile используемую в скрипте поступает полный путь к временному файлу с довольно большой задержкой и вполне вероятен случай когда скрипт отработал получае файла, сохранил его в виде временного файла, а переменная $userfile еще пуста. И до кучи $HTTP_POST_FILES['userfile']['tmp_name'] вообще почти никогда под windows ничего не содержит, даже в самом конце работы скрипта. Под *nix подобных проблем кстати не было никогда Ну а что касается php.ini, то у меня например там написано [mail function] SMTP = localhost; и file_uploads = On; upload_tmp_dir = c:/temp; upload_max_filesize = 1M; это с учетом установленного ADR А открываем и читаем файлпотому что нам нужно отправить по почте содержимое файла, а не путь к нему ![]() |
![]() |
Часовой пояс GMT +4, время: 10:55. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|