Отправка файла через форму

Тема в разделе "PHP", создана пользователем KODEAK, 26 ноя 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. KODEAK

    KODEAK

    Регистр.:
    11 апр 2009
    Сообщения:
    160
    Симпатии:
    15
    Задался вопросом как сделать отправку файла на мыло на прямую без загрузки,
    я так понимаю что для этого просто функция
    PHP:
    mail()
    не прокатит, а если прокатит то как ?
     
  2. saen

    saen

    Регистр.:
    6 авг 2006
    Сообщения:
    756
    Симпатии:
    129
    Если файл не на сервере, он в любом случае будет загружаться в папку с временными файлами, а потом уже отправляться с письмом. Если изобретешь свой способ отправки файла без загрузки, дай знать. Может нобелевскую премию получишь :D
     
  3. Alternator

    Alternator

    Регистр.:
    23 мар 2009
    Сообщения:
    295
    Симпатии:
    145
  4. Haliff3007

    Haliff3007 Читатель

    Заблокирован
    Регистр.:
    17 мар 2007
    Сообщения:
    481
    Симпатии:
    195
    Он имел ввиду, чтобы письмо содержало аттач.
    Бородин писал: php.spb.ru/php/mail.htm
     
  5. qaim

    qaim Читатель

    Заблокирован
    Регистр.:
    12 май 2010
    Сообщения:
    82
    Симпатии:
    3
    PHP:
    $from "admin"// От кого
     
    $to "i@qaim.ru"// Кому
     
    $filename "/image.jpg"// Полное имя файла 
     
    $subj 'Тема'// Тема сообщения
     
    $text 'Здоров!'// Тело сообщения
     
    $f fopen($filename,"rb"); // Открываем и читаем бинарно файл $filename
    $un strtoupper(uniqid(time())); 
    $head "From: $fromn"// Создаем заголовки нашего письма
    $head .= "To: $to ";
    $head .= "Subject: $subj ";
    $head .= "X-Mailer: PHPMail Tool ";
    $head .= "Reply-To: $from ";
    $head .= "Mime-Version: 1.0 ";
    $head .= "Content-Type:multipart/mixed;";
    $head .= "boundary="----------".$un."" ";
    $zag "------------".$un." Content-Type:text/html; ";
    $zag .= "Content-Transfer-Encoding: 8bit $text ";
    $zag .= "------------".$un." ";
    $zag .= "Content-Type: application/octet-stream;";
    $zag .= "name="".basename($filename)."" ";
    $zag .= "Content-Transfer-Encoding:base64 ";
    $zag .= "Content-Disposition:attachment;";
    $zag .= "filename="".basename($filename)."" ";
    $zag .= chunk_split(base64_encode(fread($f,filesize($filename))))." "// Кодируем строку
    // в base64, деля файл на небольшие «куски» функцией "chunk_split"

    mail("$to""$subj"$zag$head); // Посылаем письмо функцией mail()

    ?>
     
  6. trooll

    trooll PHP кодер

    Регистр.:
    22 дек 2008
    Сообщения:
    503
    Симпатии:
    116
    Есть очень мощный замечательный класс называется он PHPMailer:

    Домашняя страничка:
    Перейти по ссылке

    Класс имеет очень мощный функционал для отправки писем, может работать как может работать как с локальным почтовым сервером так и с внешним поддерживающим SMTP (допустим gmail или яндекс почта).

    Здесь полная информация о классе и примеры реализации скрипта:
    Перейти по ссылке
    Хоть по ссылки выше в примерах реализации скрипта и используется ООП, но все довольно подробно описано что и за чем.

    Здесь пример по проще с реализацие формы отправки и без использования ООП:
    Перейти по ссылке

    А если вкратце без всяких предрасутков то использовать класс довольно просто:
    PHP:
    // подключаем файл класса для отправки почты 
    require ('./class.phpmailer.php'); 

    $mail = new PHPMailer(); //создаем объект класса
    $mail->From 'test@test.ru'//от кого адрес 
    $mail->FromName 'www.php-mail.ru'//от кого имя (не обязательно)
    $mail->AddAddress('to@yandex.ru''Имя'); //кому - адрес, Имя (имя не обязательно) 
    $mail->IsHTML(true); //выставляем формат письма HTML (не обязательно) 
    $mail->Subject 'Заголовок письма';  //тема письма
    $mail->Body 'Текст письма';
    $mail->Send(); //отправляем письмо
    Класс очень прост в использовании и подключении, бесплатен, а также используется в CMS Joomla.
     
Статус темы:
Закрыта.