Forum Webscript.Ru
Программирование => PHP => Тема начата: serg128 от 17 Марта 2004, 14:50:35
-
Привет всем! Как в РНР передать файл письмом? Или хотя-бы подскажите какие есть для этого заголовки в теле письма?
-
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);
}
}
?>
-
Чё-то не работает. Можно пример использования?
-
http://php.spb.ru/php/mail.html
-
Всё равно не понятно... какие-то куски...
-
http://detail.phpclub.net -> статья про отсылку писем
-
Народ, помогите , не компиляется всё это.... не сочтите за труд запустите:
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);
}
-
serg128
у тебя броузер - Opera ?
Похоже на ее глюк с copy/paste
Удали все ____
было бы больше пользы, если бы ты сказал, какую ошибку выдает
-
Макс
процентов 90 что имеет место быть попытка заставить все это хозяйство отработать под виндой => ошибка в конфиге
[off]
еще одно заявление про "компиляется" и я отправлю тему во флейм а автора в сад - на вопрос ответили уже три раза
[/off]
-
Всё заработало => я не хочу в сад.