Компьютерная документация и статьи: Windows, BIOS, web, реестр,софт, PHP, Perl, CGI, JS, JavaScript...
Посетите Форум по программированиваю на .NET, Ruby и Java,

а также биржу надежных фрилансеров

.:: Web-мастеру ::.
  PHP
  ASP .NET
  Perl
  JavaScript
  CSS
  HTML
  Раскрутка
.:: Программисту ::.
  DirectX
  OpenGL
  Pascal
  C++
  Алгоритмы
.:: Пользователю ::.
  Windows
  Linux
  BIOS
.:: Посетителю ::.
  ФОРУМ
  Юмор
  Рассылки
  КАТАЛОГ
  ФизМат
  Партнеры
  Републикация
  Написать
.:: Железо ::.
  Ноутбук Acer 2354 LC
  МР3 MPIO FL350
.:: Партнеры ::.
шкаф шрн; Данные: букет невесты - для вас; ремонт телевизоров сокол; Fußball Trainer; Полезное - кондиционеры инверторные - услуги
Главная > PHP > Отправка писем с вложениями на PHP

Отправка писем с вложениями на PHP

Итак, из статьи Своя рассылка на PHP Вы уже узнали не только как можно отправлять письма с помощью PHP, но и как организовать простую рассылку своими силами.

С момента выхода той статьи, я получил немало отзывов и вопросов. В основном людей интересовало можно ли с помощью PHP отправлять письма с атачментами (вложениями).

Ну что ж, эта краткая статья и послужит ответом. Итак, далее представлен класс, который с легкостью позволяет прикреплять файлы к письму.

Самоучитель PHP 5.
Авторы: Колисниченко Д.Н.
Издательство: "Наука и техника"
Год издания: 2004, страниц: 567
ISBN: 5-94387-151-9
Самоучитель PHP 5 Данная книга является превосходным учебным пособием, позволяющим быстро освоить и эффективно использовать РНР. Здесь вы найдете все, что для этого необходимо: от описания настройки РНР, основ CGI и базовых конструкций языка, до работы с сессиями, каналами, сокетами и другими специальными технологиями РНР. Особое место занимает рассмотрение взаимодействия РНР с базами данных. В книге рассмотрены, как MySQL, так и SQLite, поддерживаемая РНР 5.

При всем при этом, книга максимально ориентирована на достижение реальных практических результатов. В деталях описано, как создать на РНР свою гостевую книгу, чат, форум, почтовую рассылку на сайте, новостную ленту и даже Интернет-магазин. Приведены готовые скрипты. Отдельно рассмотрена методика создания системы автоматического управления содержимым сайта ("движка"). Такая система позволит вам максимально упростить поддержку и обновление своего сайта. Кроме создания своих скриптов, приведено описание профессиональных продуктов (бесплатных и открытых): форума РНРВВ и системы PHP-Nuke. Эти продукты применяются на огромном количестве сайтов и позволяют "дважды не изобретать велосипед", а использовать уже готовые решения.

Книга отличается простотой и ясностью изложения материала. Написана опытным и известным автором. Лучший выбор для начинающих изучать РНР.



class mime_mail {
var $parts;
var $to;
var $from;
var $headers;
var $subject;
var $body;

// создаем класс
function mime_mail() {
 $this->parts = array();
 $this->to =  "";
 $this->from =  "";
 $this->subject =  "";
 $this->body =  "";
 $this->headers =  "";
}

// как раз сама функция добавления файлов в мыло
function add_attachment($message, $name = "", $ctype = "application/octet-stream") {
 $this->parts [] = array (
  "ctype" => $ctype,
  "message" => $message,
  "encode" => $encode,
  "name" => $name
 );
}

// Построение сообщения (multipart)
function build_message($part) {
 $message = $part["message"];
 $message = chunk_split(base64_encode($message));
 $encoding = "base64";
 return "Content-Type: ".$part["ctype"].($part["name"]? "; name = \"".$part["name"]."\"" : "")."\nContent-Transfer-Encoding: $encoding\n\n$message\n";
}

function build_multipart() {
 $boundary = "b".md5(uniqid(time()));
 $multipart = "Content-Type: multipart/mixed; boundary = $boundary\n\nThis is a MIME encoded message.\n\n--$boundary";
 for($i = sizeof($this->parts)-1; $i>=0; $i--) $multipart .= "\n".$this->build_message($this->parts[$i]). "--$boundary";
 return $multipart.=  "--\n";
}

// Посылка сообщения, последняя вызываемая функция класса
function send() {
 $mime = "";
 if (!empty($this->from)) $mime .= "From: ".$this->from. "\n";
 if (!empty($this->headers)) $mime .= $this->headers. "\n";
 if (!empty($this->body)) $this->add_attachment($this->body, "", "text/plain");  
 $mime .= "MIME-Version: 1.0\n".$this->build_multipart();
 mail($this->to, $this->subject, "", $mime);
}
}

Вот и все, привожу пример использования класа:

$attachment = fread(fopen("file.zip", "r"), filesize("file.zip"));
$mail = new mime_mail();
$mail->from = "my@e-mail.com";
$mail->headers = "Errors-To: [EMAIL=my@e-mail.com]my@e-mail.com[/EMAIL]";
$mail->to = "user@e-mail.com";
$mail->subject = "PHP atachment";
$mail->body = "Get your file!";
$mail->add_attachment("$attachment", "file.zip", "Content-Transfer-Encoding: base64 /9j/4AAQSkZJRgABAgEASABIAAD/7QT+UGhvdG9zaG");
$mail->send();

Третий параметр в add_attachment передает заголовок типа файла, например, для картинки будет "image/jpeg"

Вот, собственно и все, как видите, ничего сложного. Будут вопросы - задавайте.


Читайте также:

Своя рассылка на PHP
Отправка писем в правильной кодировке

Обсудить статью на форуме [откроется в новом окне]

Автор: Владислав Путяк - http://docs.com.ru

.:: Разное ::.

.:: Счетчики ::.
Rambler's Top100

Copyright © 2007 docs.com.ru / Сайт размещен на Vingrad Hosting


http://www.seokontakt.ru/index.php?page=teplovizor
Хорошее санитарно-эпидемиологическое заключение принципиално.