Автор Тема: Как передать файл письмом?  (Прочитано 4214 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн serg128

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 31
  • +0/-0
  • 0
    • Просмотр профиля
Как передать файл письмом?
« : 17 Марта 2004, 14:50:35 »
Привет всем! Как в РНР передать файл письмом? Или хотя-бы подскажите какие есть для этого заголовки в теле письма?

Оффлайн pauk

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 201
  • +0/-0
  • 0
    • Просмотр профиля
    • http://tax-free.pp.ua/
Как передать файл письмом?
« Ответ #1 : 17 Марта 2004, 14:59:03 »


<?
   class 
multi_mail
   
{
   var 
$from// Отправитель
   
var $to// Получатель
   
var $headers// Заголовок сообщения
   
var $body// Тело сообщения
   
   
   
function multi_mail() // Конструктор класса
   // Проводим инициализацию переменных
   
{
   
$this -> from "";
   
$this -> to "";
   
$this -> body "";
   
$this -> headers = Array();
   
$this -> subject "";
   }
   
   
// Присоединяем файл
   
function attach_file($file_name "" // Имя файла
   
$file_content// Содержимое файла
   
$encoding_type "application/octet-stream" //Тип кодировки данных.
   
)
   {
   
$this -> headers[] = array( // Записываем заголовочную информацию.
   
"name" => $file_name,
   
"content" => $file_content,
   
"encode" => $encoding_type
   
);
   }
   
   function 
build_letter($header// Строим Часть письма, будь то аттаченный файл или простой текст
   
{
   
$letter $header["content"];
   if (
$header["encode"] != "text/plain"):
   
$letter chunk_split(base64_encode($letter));
   
$encoding "base64";
   else:


	

   
$encoding $header["encode"];
   endif;
   return 
"Content-Type: ".$header["encode"].
   (
$header["name"]? ".; name = \\"".$header["name"]."\\"" "")
   .
"\\r\\nContent-Transfer-Encoding:
   
$encoding\\r\\n\\r\\n$letter\\n";
   }
   
   function 
set_multipart_mail() // Собираем письмо из разрозненных частей
   
{
   
$boundary = \'b\'.md5(uniqid(time())); // Создаем уникальное число, служащее индетификатором для чати письма
   
   $multipart = "Content-Type: multipart/mixed;
   boundary =$boundary\\n\\nThis is a MIME encoded letter\\r\\n\\r\\n--$boundary";
   for($step = sizeof($this->headers)-1; $step >=0; $step--)
   {
   $multipart .= "\\r\\n".$this->build_letter($this->headers[$step])."--$boundary";
   // Вставляем содержимое межу метками
   }
   return $multipart .= "--\\r\\n";
   }
   
   function get_full_message()
   // Вставляем тело письма (текстовую начинку) и все файлы
   // на выходе получаем полное писмо (одна большая строка :)))
   {
   $mime = "";
   if (!empty($this->from)):
   $mime .= "From: ".$this->from." \\r\\n";
   endif;
   if (!empty($this->body)):
   $this -> attach_file("",$this->body,"text/plain");
   $mime .= "MIME-Version: 1.0\\r\\n".$this->set_multipart_mail();
   endif;
   
   return $mime;
   }
   
   
   function send_mail() // Собственно посыл письма
   {
   $mime = $this -> get_full_message(false);
   mail($this->to,$this->subject,"",$mime);
   }
   }
   ?> 
Hi!

Оффлайн serg128

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 31
  • +0/-0
  • 0
    • Просмотр профиля
Как передать файл письмом?
« Ответ #2 : 17 Марта 2004, 16:30:09 »
Чё-то не работает. Можно пример использования?

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
Как передать файл письмом?
« Ответ #3 : 17 Марта 2004, 16:33:33 »
AS IS...

Оффлайн serg128

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 31
  • +0/-0
  • 0
    • Просмотр профиля
Как передать файл письмом?
« Ответ #4 : 17 Марта 2004, 17:01:13 »
Всё равно не понятно... какие-то куски...

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Как передать файл письмом?
« Ответ #5 : 17 Марта 2004, 17:11:48 »
http://detail.phpclub.net -> статья про отсылку писем
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн serg128

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 31
  • +0/-0
  • 0
    • Просмотр профиля
Как передать файл письмом?
« Ответ #6 : 17 Марта 2004, 18:33:45 »
Народ, помогите , не компиляется всё это.... не сочтите за труд запустите:
  function XMail($from, $to, $subj, $text, $filename)
  {
____$f_________= fopen($filename,"rb");
____$un________= strtoupper(uniqid(time()));
____$head______= "From: $from\\n";
____$head_____.= "To: $to\\n";
____$head_____.= "Subject: $subj\\n";
____$head_____.= "X-Mailer: PHPMail Tool\\n";
____$head_____.= "Reply-To: $from\\n";
____$head_____.= "Mime-Version: 1.0\\n";
____$head_____.= "Content-Type:multipart/mixed;";
____$head_____.= "boundary=\\"----------".$un."\\"\\n\\n";
____$zag_______= "------------".$un."\\nContent-Type:text/html;\\n";
____$zag______.= "Content-Transfer-Encoding: 8bit\\n\\n$text\\n\\n";
____$zag______.= "------------".$un."\\n";
____$zag______.= "Content-Type: application/octet-stream;";
____$zag______.= "name=\\"".basename($filename)."\\"\\n";
____$zag______.= "Content-Transfer-Encoding:base64\\n";
____$zag______.= "Content-Disposition:attachment;";
____$zag______.= "filename=\\"".basename($filename)."\\"\\n\\n";
____$zag______.= chunk_split(base64_encode(fread($f,filesize($filename))))."\\n";
____return @mail("$to", "$subj", $zag, $head);
  }

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Как передать файл письмом?
« Ответ #7 : 17 Марта 2004, 19:18:09 »
serg128
у тебя броузер - Opera ?
Похоже на ее глюк с copy/paste
Удали все
Цитировать
____



было бы больше пользы, если бы ты сказал, какую ошибку выдает
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
Как передать файл письмом?
« Ответ #8 : 17 Марта 2004, 19:22:18 »
Макс
процентов 90 что имеет место быть попытка заставить все это хозяйство отработать под виндой => ошибка в конфиге
[off]
еще одно заявление про "компиляется" и я отправлю тему во флейм  а автора в сад - на вопрос ответили уже три раза
[/off]
AS IS...

Оффлайн serg128

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 31
  • +0/-0
  • 0
    • Просмотр профиля
Как передать файл письмом?
« Ответ #9 : 17 Марта 2004, 19:58:53 »
Всё заработало => я не хочу в сад.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28