| |
|
|
| | все пишу в одной форме php и форму и обработчик событий
<HTML>
<HEAD>
<TITLE>Отправка сообщения с вложением</TITLE>
</HEAD>
<BODY>
<H3> <center><font color=#1E90FF>Отправка сообщения с вложением</font></H3>
<center>
<table width=1 border=0>
<form action="<?echo $PHP_SELF;?>" method="post">
<tr><td width=50%>To:</td><td align=right><input type=text name=mail_to maxlength=32></td></tr>
<tr><td width=50%>Subject:</td><td align=right><input type=text name=mail_subject maxlength=64></td></tr>
<tr><td colspan=2>Сообщение:<br><textarea cols=50 rows=8 name=mail_msg></textarea></td>
<tr><td width=50%>Photo:</td><td align=right><input type=file name=mail_file maxlength=64></td></tr>
</tr><tr><td colspan=2><input type=submit value='Отправить'></td></tr>
</form>
</table>
</center>
</BODY>
</HTML>
Обработчик
<?php
if(empty($_POST['mail_to'])) exit("адрес куда все шлется");
// проверяем правильности заполнения с помощью регулярного выражения
if (!preg_match("/^[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}$/i", $_POST['mail_to'])) exit("адрес куда все шлется");
$_POST['mail_to'] = htmlspecialchars(stripslashes($_POST['mail_to']));
$_POST['mail_subject'] = htmlspecialchars(stripslashes($_POST['mail_subject']));
$_POST['mail_msg'] = htmlspecialchars(stripslashes($_POST['mail_msg']));
$picture = "";
// Если поле выбора вложения не пустое - закачиваем его на сервер
if (!empty($_FILES['mail_file']['tmp_name']))
{
// Закачиваем файл
$path = $_FILES['mail_file']['name'];
if (copy($_FILES['mail_file']['tmp_name'], $path)) $picture = $path;
}
$thm = $_POST['mail_subject'];
$msg = $_POST['mail_msg'];
$mail_to = $_POST['mail_to'];
// Отправляем почтовое сообщение
if(empty($picture)) mail($mail_to, $thm, $msg);
else send_mail($mail_to, $thm, $msg, $picture);
// Вспомогательная функция для отправки почтового сообщения с вложением
function send_mail($to, $thm, $html, $path)
{
$fp = fopen($path,"r");
if (!$fp)
{
print "Файл $path не может быть прочитан";
exit();
}
$file = fread($fp, filesize($path));
fclose($fp);
$boundary = "--".md5(uniqid(time())); // генерируем разделитель
$headers .= "MIME-Version: 1.0\n";
$headers .="Content-Type: multipart/mixed; boundary=\"$boundary\"\n";
$multipart .= "--$boundary\n";
$kod = 'koi8-r'; // или $kod = 'windows-1251';
$multipart .= "Content-Type: text/html; charset=$kod\n";
$multipart .= "Content-Transfer-Encoding: Quot-Printed\n\n";
$multipart .= "$html\n\n";
$message_part = "--$boundary\n";
$message_part .= "Content-Type: application/octet-stream\n";
$message_part .= "Content-Transfer-Encoding: base64\n";
$message_part .= "Content-Disposition: attachment; filename = \"".$path."\"\n\n";
$message_part .= chunk_split(base64_encode($file))."\n";
$multipart .= $message_part."--$boundary--\n";
if(!mail($to, $thm, $multipart, $headers))
{
echo "К сожалению, письмо не отправлено";
exit();
}
}
?>
|
Может, не правильно указан емайл или action,
какие права на хостинге должны быть на этом файле
с каким расширением должен быть .htm или .php | |
| |
|
|
| |
|
|
| |
для: avp
(01.10.2006 в 11:51)
| | | А в чём выражается "не работа" скрипта? | |
| |
|
|
| |
|
|
| |
для: cheops
(01.10.2006 в 13:16)
| | | индикатор загрузки на сервер проходит, потом форма очищается от заполнений и все в первоночальном виде то есть пустая. Никаких сообщений, удачно или не удачно не выходит.
Если создаю отдельный файл для обработки событий то переходит на него высвечивается емайл адреса куда шлется сообщение и на этом все.
Пожалуйста, помогите. | |
| |
|
|
| |
|
|
| |
для: avp
(01.10.2006 в 16:29)
| | | Уже голова кругом идет, идет загрузка файла... далее переходит на обработчик, но на экране только адрес куда высылается почта
Еще вопрос:
Нужно создать папку FILES ....какие права доступа ей дать? | |
| |
|
|
| |
|
|
| |
для: avp
(01.10.2006 в 20:48)
| | | Папка files не требуется, скрипт копирует скрипт в директорию, в которой он сам находится, вот в этой директории права доступа должны быть выставлены таким образом, чтобы скрипт мог записывать файл. | |
| |
|
|
| |
|
|
| |
для: avp
(01.10.2006 в 16:29)
| | | Да, всё правильно, если хотите сообщить, что-то посетителю, то исправьте блок
<?php
if(!mail($to, $thm, $multipart, $headers))
{
echo "К сожалению, письмо не отправлено";
exit();
}
?>
|
на
<?php
if(!mail($to, $thm, $multipart, $headers))
{
echo "К сожалению, письмо не отправлено";
exit();
}
else
{
echo "Письмо успешно отправлено";
}
?>
|
| |
| |
|
|
| |
|
|
| |
для: cheops
(02.10.2006 в 00:17)
| | | Теперь выдает следующее сообщение
Not Found
The requested URL /< was not found on this server.
|
| |
| |
|
|
| |
|
|
| |
для: avp
(02.10.2006 в 20:14)
| | | А URL в браузере какой вид имеет? | |
| |
|
|
| |
|
|
| |
для: cheops
(03.10.2006 в 12:31)
| | | домен третьего уровня без www | |
| |
|
|