Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Помогите со скриптом!!!
 
 автор: No name   (13.07.2004 в 23:23)
 
 

Хотел сам написать скрипт рассылки прайс-листа на php подписавшимся юзерам, но ничего из этого не получилось. Может поможете хотя бы элементарным примером?

   
 
 автор: glsv (Дизайнер)   (13.07.2004 в 23:33)   письмо автору
 
   для: No name   (13.07.2004 в 23:23)
 

Давайте начнем по порядку. Что не получилось?

Базу е-мейлов сделали?
Добавлять, удалять е-mail-ы, редактировать ее можно?
Отправку хотя бы одного письма сделали?
А отправку всем пользователям сразу?
А отправку письма со вложением?

На каком пункте у Вас возникли проблемы?

   
 
 автор: No name   (14.07.2004 в 16:57)
 
   для: glsv (Дизайнер)   (13.07.2004 в 23:33)
 

Дело в том что нужно отправлять не текст а ФАЙЛ.

   
 
 автор: glsv (Дизайнер)   (15.07.2004 в 02:53)   письмо автору
 
   для: No name   (14.07.2004 в 16:57)
 

Т.е. нужно отсылку письма со вложением сделать? На этом этапе проблемы?
Ну если, так то придется звать на помощь Максима Валерьевича – он как раз недавно этим занимался.

   
 
 автор: Кузнецов М.В.   (15.07.2004 в 13:37)   письмо автору
 
   для: No name   (14.07.2004 в 16:57)
 

Примерно так...
Суть механизма отправки файлов в письме состоит в том, что письмо состоит из нескольких частей, которые отделены друг от друга уникальным разделителем. Именно этот разделитель позволяет прикладывать к письму несколько файлов так, чтобы их содержимое не смешивалось в процессе передачи данных.
Для того чтобы отправить вложенный файл, надо:
1. Прочитать это файл в какую-либо переменную (здесь и далее: это просто примеры функций, а не полностью отлаженный код):

<?php
function attachment($path=""$name ""$encoding_type="application/octet-stream") { 
    if (!
file_exists($path.$name)) {
      print 
"File $path.$name dosn't exist.";
      return;
    }
    
$fp=fopen($path.$name,"r");
    if (!
$fp) {
      print 
"File $path.$name coudn't be read.";
      return;
    } 
    
$file_content=fread($fpfilesize($path.$name));
    
fclose($fp);
    
$headers[]=array("body"=>$file_content"name"=>$name"en_type"=>$encoding_type); 
}
?>


2. Затем нужно построить часть письма, независимо от того, простой это текст или приатаченный файл:
<?php
function build_part_msg($i) { 
    
$message_part=""
    
$message_part.="Content-Type: ".$headers[$i]["en_type"]; 
    if (
$headers[$i]["name"]!=""
       
$message_part.="; name = \"".$headers[$i]["name"]."\"\n"
    else 
       
$message_part.="\n"
    
$message_part.="Content-Transfer-Encoding: base64\n"
    
$message_part.="Content-Disposition: attachment; filename = \"".
       
$headers[$i]["name"]."\"\n\n"
    
$message_part.=chunk_split(base64_encode($headers[$i]["body"]))."\n";
    return 
$message_part
}
?>


3. Теперь собираем письмо из разрозненных частей:
<?php
function build_msg() { 
    
$boundary="=_".md5(uniqid(time())); 
    
$headers.="MIME-Version: 1.0\n"
    
$headers.="Content-Type: multipart/mixed;     
    
$boundary=\"$boundary\"\n"
    
$multipart=""
    
$multipart.="This is a MIME encoded message.\n\n"
    for (
$i=(count($headers-1); $i>=0$i--)
      
$multipart.="--$boundary\n".build_part_msg($i); 
    
$mime "$multipart--$boundary--\n"
}
?>

4. Теперь вставляем тело письма (текст), все приатаченные файлы и на выходе получаем одну большую строку, которая и будет нашим письмом (обычно объединяется с функцией отправки письма):
<?php
function get_full_msg()
{
$mime "";
if (!empty(
$from)){
$mime .= "From: ".$from." \r\n";
}
if (!empty(
$file_content)){
attachment("/usr/hosting/yoursite/html/test/","t.doc");
$mime .= "MIME-Version: 1.0\r\n".build_msg();
}
return 
$mime;
}
?>


5. Посылаем письмо.
<?php
function send_mail() // Собственно посыл письма
{
get_full_message();
@
mail($to,$subject,"",$mime);
}
?>


Вот примерно так это делается. Вообще тема достаточно серьезная и думаю, что скоро мы выложим соответсвующий класс и поместим статейку с более-менее подробным описанием того, как это делать.

   
 
 автор: No name   (18.07.2004 в 14:57)
 
   для: Кузнецов М.В.   (15.07.2004 в 13:37)
 

Будем ждать статью с огромным нетерпением.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования