Вобщем ситуация такая. На сайте есть функция отправки со странички текста с вложением(файлом) на ящик организации. Т.е. Указываешь Фамилию, телефон, описание, прикрепляешь файл и нажимаешь отправить. Письмо с вложением приходит на почту организации.. Это мне писал один парнишка, и он сделал почемуто отправку файла через сайт(т.е. сначало на сайт в папку копируется а потом от туда отправляется по адресу) И выяснилась недавно проблема, оказывается мой хостинг не поддерживает загрузку файлов таким образом более 2 мб...(т.е. большие файлы не приходят) Хотя Через FTP все нормально... И надо переписать немного код. Чтобы он не копировал файл на сайт, а сразу от клиента отправлял на почту...
Кто сможет помочь, за небольшое вознаграждение или по доброте душевной??
Это мой код.
<?php
$name = $_POST['name'];
$tel = $_POST['tel'];
$mail = $_POST['mail'];
$text = $_POST['text'];
$mail_to = "u1111r-irk@bk.ru"; // Адрес, на который будем отправлять.
$thm = "Онлайн-заявка"; // Тема письма.
$picture = "";
$path = '/home/srv23857/htdocs/tmp/' . $_FILES['file']['name'];
$path2 = $_FILES['file']['name'];
// Если поле выбора вложения не пустое - закачиваем его на сервер
if (!empty($_FILES['file']['tmp_name']))
{
// Закачиваем файл
//$path = $_FILES['file']['name'];
if (copy($_FILES['file']['tmp_name'], $path)) $picture = $path;
}
// Обрезаем поля, которые не должны быть длиннее 30 символов.
if ($name !='' ){$name = substr($name,0,30);}
if ($tel !=''){$tel = substr($tel,0,30);}
if ($mail!=''){$mail = substr($mail,0,30);}
$msg = "Имя: $name\nТелефон: $tel\nE-mail: $mail\nСообщение: $text\n\nIP: $REMOTE_ADDR";
// Отправляем почтовое сообщение
if(empty($picture))
{
mail($mail_to, $thm, $msg);
}
else
{
$msg = "Имя: $name
Телефон: $tel
E-mail: $mail
Сообщение: $text
IP: $REMOTE_ADDR";
send_mail($mail_to, $thm, $msg, $picture);
unlink($picture);
}
// Вспомогательная функция для отправки почтового сообщения с вложением (Trianon)
function send_mail($to, $thm, $html, $path)
{ if ($path) {
$fp = fopen($path,"rb");}
if (!$fp)
{
print "Файл $path не может быть прочитан";
exit();
}
$file = fread($fp, filesize($path));
fclose($fp);
$EOL = "\n"; // ограничитель строк, некоторые почтовые сервера требуют \n - подобрать опытным путём
$boundary = "--".md5(uniqid(time())); // любая строка, которой не будет ниже в потоке данных.
$headers = "MIME-Version: 1.0;$EOL";
$headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"$EOL";
$multipart = "--$boundary$EOL";
$multipart .= "Content-Type: text/html; charset=windows-1251$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=" . basename($path) . $EOL . "";
$multipart .= "Content-Transfer-Encoding: base64$EOL";
$multipart .= "Content-Disposition: attachment; filename=" . basename($path) . $EOL . "";
$multipart .= $EOL; // раздел между заголовками и телом прикрепленного файла
$multipart .= chunk_split(base64_encode($file));
$multipart .= "$EOL--$boundary--$EOL";
if(!mail($to, $thm, $multipart, $headers))
{
echo "К сожалению, письмо не отправлено";
exit();
}
}
header('Refresh: 3; URL=index.html');
echo '<center>Ваше сообщение отправлено!
Через 3 секунды вы будете перенаправлены.</center>';
?>