RTFM! статьи, советы, скрипты
::Заработок с помощью сайта ::JScript по-русски! ::Все русские мануалы::
МЕНЮ
О САЙТЕ
НОВОСТИ
СТАТЬИ
КНИГИ
АППЛЕТЫ
СВЯЗЬ

СЧЕТЧИКИ
Rambler's Top100
Рейтинг@Mail.ru
Яндекс цитирования

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

Автор: Аркадий Бабулин Сайт: http://www.webscript.ru/     Рейтинг: N/A из 7       <<НАЗАД
   
   
   
   Сущность механизма отправки файлов в текстовом сообщении заключается в том, что письмо состоит из нескольких частей, границы которых обозначены уникальной сигнатурой. Именно она и позволяет Вам прикладывать к письму несколько файлов и не смешивать их содержимое в процессе передачи данных.
   
   Я написал класс (точнее, если быть честным - это стандартное решение подобной проблемы. Вы можете найти такой же класс на php.spb.ru. Я не стал переписывать его без изменений, а немного переработал творчески.
   
   Итак исходный код класса с комментариями:
   
   <?
   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);
   }
   }
   ?>
   Уложив этот класс в отдельный файл, Вы можете использовать его где угодно.
   
   


<<НАЗАД      ОЦЕНИТЬ СТАТЬЮ    ВЕРСИЯ ДЛЯ ПЕЧАТИ>>
Статья прочитана :  раз.




пейкюлю



 
 
 
 
 
pauk ©® 2000-2015. All rights reserved.
При перепечатке ссылка на сайт и указание обязательны.
Мнение администрации сайта не всегда совпадает с мнением автора.
Орфография и пунктуация - авторские.
Администрация не несет никакой ответственности за использование материалов.
.
Protected by Copyscape DMCA Takedown Notice Infringement Search Tool