|
|
|
| Скрипт ошибок не выдает, не могу понять то ли проблемы хостинга, то ли я где то ошибся, можете потестировать у себя отправляються ли письма
Форма для отправки
echo "<p><span style='COLOR: blue'><strong><font color='#800000'> Сделать заказ</span></p>";
echo "<form method=post enctype='multipart/form-data'>";
echo "<table width=100% cellpadding='3' class='text'>";
echo "<tr valign='top'><td width='30%'>";
echo "Контактное лицо:</td><td><input name='name' size=40> <font color='red' size='+1'>*</font><br></td></tr>";
echo "<tr valign='top'><td>Телефон для обратной связи:</td><td><input name='phone' size=15> <font color='red' size='+1'>*</font></td></tr>";
echo "<tr valign='top'><td>Электронный адрес:</td><td><input name='mail' size=40></td></tr>";
echo "<tr valign='top'><td>Размер готовой картины (см):</td><td> <input name='width' size=5> Ширина<br> <input name='height' size=5> Высота</td></tr>";
echo "<tr valign='top'><td>Обработка или коллаж (кол-во человек):</td><td><input name='collage' size=5></td></tr>";
echo "<tr valign='top'><td>Прикрепить файл:</td><td><input type='file' name='file_1'><br>";
echo "<input type='file' name='file_2'><br>";
echo "<input type='file' name='file_3'><br>";
echo "<input type='file' name='file_4'><br>";
echo "<input type='file' name='file_5'></td></tr>";
echo "<tr valign='top'><td>Дополнтельная информация:</td><td><textarea cols=35 rows=4 name='note'></textarea></td></tr></table>";
echo "<input type='submit' value='Отправить'>";
echo "</form>";
|
Файл обработчик
<?php
// проверяем правильности заполнения с помощью регулярного выражения
$picture = "";
// Если поле выбора вложения не пустое - закачиваем его на сервер
if (!empty($_FILES['file_1']['tmp_name']))
{
// Закачиваем файл
$path = $_FILES['file_1']['name'];
if (copy($_FILES['file_1']['tmp_name'], $path)) $picture = $path;
}
$thm = "Поступил новый заказ";
$msg = $_POST['name']." (".$_POST['phone'].") ".$_POST['mail']." \r\n"." Ширина: ".$_POST['width']." Высота: ".$_POST['height'];
if($_POST['collage']>0)
{
$msg .= "\r\n Коллаж ".$_POST['collage']." человека(-ек)";
}
if($_POST['note']!='')
{
$msg .= "\r\n ".$_POST['note'];
}
// адрес получателя
$mail_to = 'webjob_wd@mail.ru';
echo "<hr>Текст сообщения ".$msg;
echo "<br>Тема ".$thm;
echo "<br>Кому ".$mail_to."<hr>";
// Отправляем почтовое сообщение
if(empty($picture)) mail($mail_to, $thm, $msg);
else send_mail($mail_to, $thm, $msg, $picture);
// Вспомогательная функция для отправки почтового сообщения с вложением (Trianon)
function send_mail($mail_to, $thema, $html, $path)
{ if ($path) {
$fp = fopen($path,"rb");
if (!$fp)
{ print "Cannot open file";
exit();
}
$file = fread($fp, filesize($path));
fclose($fp);
}
$name = "file.ext"; // в этой переменной надо сформировать имя файла (без всякого пути)
$EOL = "\r\n"; // ограничитель строк, некоторые почтовые сервера требуют \n - подобрать опытным путём
$boundary = "--".md5(uniqid(time())); // любая строка, которой не будет ниже в потоке данных.
$headers = "MIME-Version: 1.0;$EOL";
$headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"$EOL";
$headers .= "From: address@server.com";
$multipart = "--$boundary$EOL";
$multipart .= "Content-Type: text/html; charset=windows-1253$EOL";
$multipart .= "Content-Transfer-Encoding: base64$EOL";
$multipart .= $EOL; // раздел между заголовками и телом html-части
$multipart .= chunk_split(base64_encode($html));
$multipart .= "$EOL--$boundary$EOL";
$multipart .= "Content-Type: application/octet-stream; name=\"$name\"$EOL";
$multipart .= "Content-Transfer-Encoding: base64$EOL";
$multipart .= "Content-Disposition: attachment; filename=\"$name\"$EOL";
$multipart .= $EOL; // раздел между заголовками и телом прикрепленного файла
$multipart .= chunk_split(base64_encode($file));
$multipart .= "$EOL--$boundary--$EOL";
if(!mail($mail_to, $thema, $multipart, $headers))
{return False; //если не письмо не отправлено
}
else { //// если письмо отправлено
return True;
}
exit;
}
?>
|
Заранее спасибо | |
|
|
|
|
|
|
|
для: Dimka31
(22.05.2008 в 13:59)
| | что ни у кого не работает? | |
|
|
|
|
 11.8 Кб |
|
|
для: Dimka31
(22.05.2008 в 13:59)
| | mail отработает, и если на сервере все в порядке с почтой, то она будет отправлена, но... Вот это:
if(empty($picture)) mail($mail_to, $thm, $msg);
в Outlook будет выглядеть так как показано в прикреплении. Все из-за того, что так как вы отправляете, можно отправлять английский текст, но не русский. И зачем в форме пять полей file, если в скрипте обрабатывается только одно из них? | |
|
|
|
|
|
|
|
для: sim5
(22.05.2008 в 16:45)
| | Сначала бы сделать чтоб один файл отправлялся, потом доделать чтоб отправлялись и другие... | |
|
|
|
|
|
|
|
для: sim5
(22.05.2008 в 16:45)
| | >Все из-за того, что так как вы отправляете, можно отправлять английский текст, но не русский
Греческий, наверное, тоже потянет :) | |
|
|
|
|
|
|
|
для: Trianon
(23.05.2008 в 11:31)
| | Не знаю, не грек, не пробоавл. )) | |
|
|
|
|
|
|
|
для: sim5
(23.05.2008 в 11:34)
| | где наша elenaki, щас подскажет ) | |
|
|
|