На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Дополнения к правилам (только для данного раздела)
- Используйте подсветку синтаксиса при выделении исходного кода;
- В описании темы обязательно укажите язык программирования;
- Прежде чем задать вопрос, обязательно воспользуйтесь поиском и загляните в FAQ раздела.
- Если вопрос касается серверного ПО, указывайте ОС.
- Если вопрос касается ASP.NET то лучше будет задать его в соответствующем разделе. Там вы сможете получить ответ намного быстрее.

Модераторы: Serafim, fatalist
  
> Скрипт отправки файлов по почте, Повторяю: Скрипт отправки файлов по почте
    Хай пиплы!

    У меня появилась одна интерестная мысля!
    Итак, сначала историю:
    У меня есть выделинка 10 Мбит в секунду. За каждый входящий мегабайт я плачу 0.07 доллара (7 центов). Иногда бывают файлы мегов по 20-30, которые очень хочется скачать в инете, но на это очень жалко денег :( Вот я о чем и вспомнил: У меня есть почтовый ящик от моего провайдера, который мне предоставляет выделеный доступ в интернет. Размер ящика неограниченый и размер приходящего письма тоже (отправляли 40 с лишнем мегов, и проходило. А так хз). Ну вот, я и подумал, почему бы не взять какой-нибудь сайт на хостинге типа fatal.ru и не сделать скрипт, который сначало загружает файл с какого-нибудь сайта к себе (например с сайта www.download.ru/test.zip на test.fatal.ru), а потом от себя кидает этот файл по почте мне. Вроде это реально... Или у меня бред? :rolleyes:
    Высказывайте свои мнения, так как мне очень нужно высосать несколько сотен мегов из инета. :wacko:

    Спасибо за прочтение! :D
    "Лучший подарок для программиста - это попугай, знающий 3 языка:
    паскаль, вижуал бейсик и ассемблер"
      Я как-то занимался подобным - на сайте знакомого поставил PHP скрипт, в котором скачивал файл с инета на сервер, отсылал письмо с аттачем себе на мыло, потом удалял письмо. Кодов, к сожалению, не осталось =(
      [COLOR=blue]Я мог бы изменить мир, но Бог не даёт исходников...
        Цитата Argentum @ 25.07.04, 22:15
        Я как-то занимался подобным - на сайте знакомого поставил PHP скрипт, в котором скачивал файл с инета на сервер, отсылал письмо с аттачем себе на мыло, потом удалял письмо. Кодов, к сожалению, не осталось =(

        Тоесть это более чем реально? Хммм... Надо срочно браться за работу! :whistle:
        Argentum, большое тебе спасибо за совет!
        "Лучший подарок для программиста - это попугай, знающий 3 языка:
        паскаль, вижуал бейсик и ассемблер"
          Цитата
          Тоесть это более чем реально? Хммм... Надо срочно браться за работу!

          Если возникнут проблемы при создании скрипта - обращайся! ;)
          [COLOR=blue]Я мог бы изменить мир, но Бог не даёт исходников...
            Цитата Argentum @ 25.07.04, 22:19
            Цитата
            Тоесть это более чем реально? Хммм... Надо срочно браться за работу!

            Если возникнут проблемы при создании скрипта - обращайся! ;)

            Уже возникли :D.
            У тебя ася есть?
            "Лучший подарок для программиста - это попугай, знающий 3 языка:
            паскаль, вижуал бейсик и ассемблер"
              Цитата Goody @ 25.07.04, 22:22
              У тебя ася есть?

              211094963

              Добавлено в :
              Копирование файла на сервер:
              ExpandedWrap disabled
                if (!copy("http://forum.sources.ru/uploads/av-6879.gif", 'tmp.gif')) {
                    print ("failed to copy ...\n");
                }


              Отправка файла на мыло:
              ExpandedWrap disabled
                <?php
                class Mail
                {
                        var $sendto = array();
                        var $acc = array();
                        var $abcc = array();
                        var $aattach = array();
                        var $xheaders = array();
                       var $priorities = array( '1 (Highest)', '2 (High)', '3 (Normal)', '4 (Low)', '5 (Lowest)' );
                       var $charset = "us-ascii";
                        var $ctencoding = "7bit";
                        var $receipt = 0;
                        var $content_type='';
                 
                function Mail()
                {
                        $this->autoCheck( true );
                        $this->boundary= "--" . md5( uniqid("myboundary") );
                }
                 
                function Content_type($contenttype){
                 
                    $this->content_type=$contenttype;
                }
                 
                function autoCheck( $bool )
                {
                        if( $bool )
                                $this->checkAddress = true;
                        else
                                $this->checkAddress = false;
                }
                 
                function Subject( $subject )
                {
                        $this->xheaders['Subject'] = strtr( $subject, "\r\n" , "  " );
                }
                 
                function From( $from )
                {
                 
                        if( ! is_string($from) ) {
                                echo "Class Mail: error, From is not a string";
                                exit;
                        }
                        $this->xheaders['From'] = $from;
                }
                 
                function ReplyTo( $address )
                {
                 
                        if( ! is_string($address) )
                                return false;
                 
                        $this->xheaders["Reply-To"] = $address;
                 
                }
                 
                function Receipt()
                {
                        $this->receipt = 1;
                }
                 
                function To( $to )
                {
                                $this->sendto = $to;
                }
                 
                function Cc( $cc )
                {
                        if( is_array($cc) )
                                $this->acc= $cc;
                        else
                                $this->acc[]= $cc;
                 
                        if( $this->checkAddress == true )
                                $this->CheckAdresses( $this->acc );
                 
                }
                 
                function Bcc( $bcc )
                {
                        if( is_array($bcc) ) {
                                $this->abcc = $bcc;
                        } else {
                                $this->abcc[]= $bcc;
                        }
                 
                        if( $this->checkAddress == true )
                                $this->CheckAdresses( $this->abcc );
                }
                 
                function Body( $body, $charset="" )
                {
                        $this->body = $body;
                 
                        if( $charset != "" ) {
                                $this->charset = strtolower($charset);
                                if( $this->charset != "us-ascii" )
                                        $this->ctencoding = "8bit";
                        }
                }
                 
                function Organization( $org )
                {
                        if( trim( $org != "" )  )
                                $this->xheaders['Organization'] = $org;
                }
                 
                function Priority( $priority )
                {
                        if( ! intval( $priority ) )
                                return false;
                 
                        if( ! isset( $this->priorities[$priority-1]) )
                                return false;
                 
                        $this->xheaders["X-Priority"] = $this->priorities[$priority-1];
                 
                        return true;
                 
                }
                 
                function Attach($filename,$filetype = "",$disposition = "inline")
                {
                 
                        if( $filetype == "" )
                                $filetype = "application/x-unknown-content-type";
                                //$filetype = "text/plain";
                 
                 
                 
                         $this->aattach[] = $filename;
                 
                 
                        $this->actype[] = $filetype;
                        $this->adispo[] = $disposition;
                 
                }
                 
                function BuildMail()
                {
                        $this->headers = "";
                //        $this->xheaders['To'] = implode( ", ", $this->sendto );
                 
                        if( count($this->acc) > 0 )
                                $this->xheaders['CC'] = implode( ", ", $this->acc );
                 
                        if( count($this->abcc) > 0 )
                                $this->xheaders['BCC'] = implode( ", ", $this->abcc );
                 
                 
                        if( $this->receipt ) {
                                if( isset($this->xheaders["Reply-To"] ) )
                                        $this->xheaders["Disposition-Notification-To"] = $this->xheaders["Reply-To"];
                                else
                                        $this->xheaders["Disposition-Notification-To"] = $this->xheaders['From'];
                        }
                 
                        if( $this->charset != "" ) {
                                //global $contenttype;
                                $content_type=$this->content_type;
                                $this->xheaders["Mime-Version"] = "1.0";
                                $this->xheaders["Content-Type"] = "$content_type; charset=$this->charset";
                                $this->xheaders["Content-Transfer-Encoding"] = $this->ctencoding;
                        }
                 
                        $this->xheaders["X-Mailer"] = "RLSP Mailer";
                        if( count( $this->aattach ) > 0 ) {
                 
                                $this->_build_attachement();
                        } else {
                                $this->fullBody = $this->body;
                        }
                 
                        reset($this->xheaders);
                        while( list( $hdr,$value ) = each( $this->xheaders )  ) {
                                if( $hdr != "Subject" )
                                        $this->headers .= "$hdr: $value\n";
                        }
                }
                 
                function Send()
                {
                        $this->BuildMail();
                        $this->strTo = $this->sendto;
                        $res = @mail( $this->strTo, $this->xheaders['Subject'], $this->fullBody, $this->headers );
                 
                }
                 
                function Get()
                {
                        $this->BuildMail();
                        $mail = "To: " . $this->strTo . "\n";
                        $mail .= $this->headers . "\n";
                        $mail .= $this->fullBody;
                        return $mail;
                }
                 
                function ValidEmail($address)
                {
                        if( ereg( ".*<(.+)>", $address, $regs ) ) {
                                $address = $regs[1];
                        }
                         if(ereg( "^[^@  ]+@([a-zA-Z0-9\-]+\.)+([a-zA-Z0-9\-]{2}|net|com|gov|mil|org|edu|int)\$",$address) )
                                 return true;
                         else
                                 return false;
                }
                 
                function CheckAdresses( $aad )
                {
                        for($i=0;$i< count( $aad); $i++ ) {
                                if( ! $this->ValidEmail( $aad[$i]) ) {
                                        echo "Class Mail, method Mail : invalid address $aad[$i]";
                                        exit;
                                }
                        }
                }
                 
                function _build_attachement()
                {
                 
                        $this->xheaders["Content-Type"] = "multipart/mixed;\n boundary=\"$this->boundary\"";
                 
                        $this->fullBody = "This is a multi-part message in MIME format.\n--$this->boundary\n";
                        $this->fullBody .= "Content-Type: text/html; charset=$this->charset\nContent-Transfer-Encoding: $this->ctencoding\n\n" . $this->body ."\n";
                 
                        $sep= chr(13) . chr(10);
                 
                        $ata= array();
                        $k=0;
                        // for each attached file, do...
                        for( $i=0; $i < count( $this->aattach); $i++ ) {
                 
                                $filename = $this->aattach[$i];
                                $basename = basename($filename);
                                $ctype = $this->actype[$i];        // content-type
                                $disposition = $this->adispo[$i];
                                /*getting the original name of the file */
                                if( ! file_exists( $filename) ) {
                                        echo "Class Mail, method attach : file $filename can't be found"; exit;
                                }
                 
                                $subhdr= "--$this->boundary\nContent-Type: $ctype;\n name=\"$basename\";\nContent-Transfer-Encoding: base64\nContent-Disposition: $disposition;\n  filename=\"$basename\"\n";
                                //$subhdr= "--$this->boundary\nContent-type: $ctype;\n name=\"$filename\"\nContent-Transfer-Encoding: base64\nContent-Disposition: $disposition;\n  filename=\"$filename\"\n";
                                $ata[$k++] = $subhdr;
                                // non encoded line length
                                $linesz= filesize( $filename)+1;
                                $fp= fopen( $filename, 'r' );
                                $ata[$k++] = chunk_split(base64_encode(fread( $fp, $linesz)));
                 
                                fclose($fp);
                        }
                        $this->fullBody .= implode($sep, $ata);
                }
                } // class Mail
                ?>


              Дерзай..удачи в покорении Инета ;)

              Добавлено в :
              ExpandedWrap disabled
                (c) Antonio, из фоpума phpclub.net ;-)
                 
                Как послать письмо в HTML виде? Присоедините к письму аттач с названием message.html и письмо превратиться в HTML-письмо!
                 
                 
                <?
                // Функции. Можно вынести в дpугой файл.
                 
                class html_mime_mail {
                  var $headers;
                  var $multipart;
                  var $mime;
                  var $html;
                  var $parts = array();
                 
                function html_mime_mail($headers="") {
                    $this->headers=$headers;
                }
                 
                function add_html($html="") {
                    $this->html.=$html;
                }
                 
                function build_html($orig_boundary,$kod) {
                    $this->multipart.="--$orig_boundary\n";
                    if ($kod=='w' || $kod=='win' || $kod=='windows-1251') $kod='windows-1251';
                    else $kod='koi8-r';
                    $this->multipart.="Content-Type: text/html; charset=$kod\n";
                    $this->multipart.="BCC: del@ipo.spb.ru\n";
                    $this->multipart.="Content-Transfer-Encoding: Quot-Printed\n\n";
                    $this->multipart.="$this->html\n\n";
                }
                 
                 
                function add_attachment($path="", $name = "", $c_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=fread($fp, filesize($path.$name));
                    fclose($fp);
                    $this->parts[]=array("body"=>$file, "name"=>$name,"c_type"=>$c_type);
                }
                 
                 
                function build_part($i) {
                    $message_part="";
                    $message_part.="Content-Type: ".$this->parts[$i]["c_type"];
                    if ($this->parts[$i]["name"]!="")
                       $message_part.="; name = \"".$this->parts[$i]["name"]."\"\n";
                    else
                       $message_part.="\n";
                    $message_part.="Content-Transfer-Encoding: base64\n";
                    $message_part.="Content-Disposition: attachment; filename = \"".
                       $this->parts[$i]["name"]."\"\n\n";
                    $message_part.=chunk_split(base64_encode($this->parts[$i]["body"]))."\n";
                    return $message_part;
                }
                 
                 
                function build_message($kod) {
                    $boundary="=_".md5(uniqid(time()));
                    $this->headers.="MIME-Version: 1.0\n";
                    $this->headers.="Content-Type: multipart/mixed; boundary=\"$boundary\"\n";
                    $this->multipart="";
                    $this->multipart.="This is a MIME encoded message.\n\n";
                    $this->build_html($boundary,$kod);
                    for ($i=(count($this->parts)-1); $i>=0; $i--)
                      $this->multipart.="--$boundary\n".$this->build_part($i);
                    $this->mime = "$this->multipart--$boundary--\n";
                }
                 
                 
                function send($server, $to, $from, $subject="", $headers="") {
                 
                    $headers="To: $to\nFrom: $from\nSubject: $subject\nX-Mailer: The Mouse!\n$headers";
                    $fp = fsockopen($server, 25, &$errno, &$errstr, 30);
                    if (!$fp)
                       die("Server $server. Connection failed: $errno, $errstr");
                    fputs($fp,"HELO $server\n");
                    fputs($fp,"MAIL FROM: $from\n");
                    fputs($fp,"RCPT TO: $to\n");
                    fputs($fp,"DATA\n");
                    fputs($fp,$this->headers);
                    if (strlen($headers))
                      fputs($fp,"$headers\n");
                    fputs($fp,$this->mime);
                    fputs($fp,"\n.\nQUIT\n");
                    while(!feof($fp))
                      $resp.=fgets($fp,1024);
                    fclose($fp);
                  }
                }
                 
                 
                // *************************************************************************
                //
                //   В качестве аттача пpисоединяем html-письмо (открывается автоматически).
                //   Второй аттач - некоторый файл из каталога.
                //   Вот так вызывать все то, что написано выше:
                //
                // *************************************************************************
                 
                 
                  $mail=new html_mime_mail();
                  $mail->add_html("<html><body><center><h2>Пpивет!<br><br>".
                                  "<br>Посылаю двоичный файл [/bin/ls] ...".
                                  "</h2></center></body></html>");
                  $mail->add_attachment("/bin/","ls");
                  $mail->build_message('win'); // если не "win", то кодиpовка koi8
                  $mail->send('ПОЧТОВЫЙ_ХОСТ_ВАШЕГО_ПРОВАЙДЕРА',
                              'КОМУ_(E-MAIL)',
                              'ОТ_КОГО_(E-MAIL)',
                              'ТЕМА ПИСЬМА');
                 
                //
                // После прихода письма качаем по ФТП оригинальный /bin/ls и сравниваем с
                // импортированным из письма:
                //
                //    X:\temp>fc /b ls ls2
                //    Сравнение файлов ls и LS2
                //    FC: различия не найдены
                //
                //
                // Внимание! Если у вас нет файла /bin/ls, то просто закомментируйте строку
                // $mail->add_attachment("/bin/","ls"), чтобы программа не пыталась присоединить
                // к письму неcуществующие файлы.
                //
                 
                 
                ?>
                 
                 
                 
                 
                 
                 
                Комментаpии по пpосьбам тpудящихся. Будут добавляться до тех поp, пока всем все не станет понятно.
                 
                > ...объяснить поподробнее, то что написано
                > на <a class='tag-url' href='http://php.spb.ru/php/mail.html' target='_blank'>http://php.spb.ru/php/mail.html</a>.
                > Т.е. я не понял, вся та информация, она
                > располагается все на одной странице или то,....
                 
                Пpогpамма состоит из 2х частей.
                 
                1 - необходимые функции
                2 - как написать письмо с аттачем. Аттач -- это HTML-письмо, содеpжащее слово "пpивет"
                 
                 
                > И второе: ("<html><body><center><h2>пpивет</h2>
                > </center></body></html>") - это есть само тело послание,
                > которое придет на mail ???
                 
                Да, это и есть аттач. Их может быть несколько.
                 
                 
                 
                --------------------------------------------------------------------------------
                 
                 
                > .. но у меня возникли кое-какие еще вопросы:
                > "почтовый хост" - в этом случае прописывается тот адрес, где
                > реально находиться почтовый ящик (т.е. в большинстве
                > случаев у провайдера) или нет
                 
                Нет. Этот параметр не имеет никакого отношения к каким-либо почтовым ящикам... Если вы не можете запонить это поле, то не занимайтесь программированием вообще.
                 
                1. Открываем свою почтовую программу (для тех, кто не понял: Outlook, Thebat или др)
                2. Смотрим, что указано в поле "исходящий (SMTP) сервер"
                3. Пишем в параметре "ХОСТ" эти данные (без угловых скобок)
                 
                Пример: smtp.peterlink.ru (если я являюсь клиентом Петерлинка, что дает мне право пользоваться сервером почты). Любой человек как-то пишет письма в Инет. Это "как-то" он делает через почтовый сервер своего провайдера.
                 
                > "кому" - ???
                > "от кого" - ???
                > "тема" - ???
                 
                Нет, пожалуй эти поля комментировать не будем... Хотя:
                 
                Кому - пример: vasya@pupkin.ru
                От кого - пример (от меня): dmitry@php...ru
                Тема - пример: ...
                            Нет, все же лучше не комментировать...
              Сообщение отредактировано: Argentum -
              [COLOR=blue]Я мог бы изменить мир, но Бог не даёт исходников...
                Как загнать файл на сервак, я разобрался. А вот как кинуть этот файл по почте нет :(
                "Лучший подарок для программиста - это попугай, знающий 3 языка:
                паскаль, вижуал бейсик и ассемблер"
                  Вообще ничего не получается, полный отстой. :wall:
                  "Лучший подарок для программиста - это попугай, знающий 3 языка:
                  паскаль, вижуал бейсик и ассемблер"
                    Вынеси один из классов, которые я тебе дал, в отдельный файл(допустим, mail.php) и включи его в главном скрипте include 'mail.php'; Далее просто используй функции класса, подставляя при этом свои пременные.
                    [COLOR=blue]Я мог бы изменить мир, но Бог не даёт исходников...
                      Вот: написал скрипт...сделал чуть проще.
                      Наслаждайся! ;))

                      ExpandedWrap disabled
                        <html>
                        <header><title>Mailpost server</title></header>
                        <body>
                        <font size=4><b>VIP MAIL SERVER</b></font>
                        <form method=POST action='?'>
                        To:&nbsp<input type='text' name='to'></input><br>
                        From:&nbsp<input name='from'type='text' value='VIP@mail.ru'></input><br>
                        Subject:&nbsp<input size=50 name='sbj'type='text' value='Cool'></input><br>
                        Include:&nbsp<input size=100 name='fname' type='text' ></input><br>
                        <textarea name='msg' cols=100 rows=20></textarea><br>
                        <input type='submit' name='ok' value='   Send   '></input>
                        </form>
                         
                         
                        <?php
                        if ((@($_POST['fname']))&&(@($_POST['from']))&&(@($_POST['to']))&&(@($_POST['sbj']))){
                        $boundary = md5(uniqid(""));
                        $filename = $_POST['fname'];
                        $zip_content = '';
                        $fd = fopen ($filename, "r") or die("Can't open $fname");
                        while(!feof($fd))
                            $zip_content .= base64_encode(fread($fd, 54))."\n";
                        fclose($fd);
                         
                        $from = $_POST['from'];
                        $to = $_POST['to'];
                        $subject = $_POST['sbj'];
                        $text = $_POST['msg'];
                         
                        $headers = "From: $from\n"."Reply-to: $from\n"."Errors-to: $from\n"."Subject: $subject\n"."MIME-Version: 1.0\n"."Content-Type: multipart/mixed;\tboundary=\"$boundary\"";
                        $body = "This is a multi-part message in MIME format.\n"."\n"."--$boundary\n"."Content-Type: application/x-zip-compressed;\tname=\"$filename\"\n"."Content-Transfer-Encoding: base64\n"."Content-Disposition: attachment;\tfilename=\"$filename\"\n"."\n"."$zip_content\n"."\n"."--$boundary\n"."Content-Type: text/plain; charset= \"koi8-r\"\n"."Content-Transfer-Encoding: 8bit\n"."\n"."$text\n"."\n"."--$boundary--";
                         
                        @$result = mail($to, $subject, $body, $headers);
                        echo $result?"Mail sent":"Failed to send";
                        }
                        else echo "Some fields are missed";
                        ?>
                        </body>
                        </html>


                      Добавлено в :
                      Блин... глючит...

                      <html>
                      <header><title>Mailpost server</title></header>
                      <body>
                      <font size=4><b>VIP MAIL SERVER</b></font>
                      <form method=POST action='?'>
                      To:&nbsp<input type='text' name='to'></input><br>
                      From:&nbsp<input name='from'type='text' value='VIP@mail.ru'></input><br>
                      Subject:&nbsp<input size=50 name='sbj'type='text' value='cool'></input><br>
                      Include:&nbsp<input size=100 name='fname' type='text' ></input><br>
                      <textarea name='msg' cols=100 rows=20></textarea><br>
                      <input type='submit' name='ok' value=' Send '></input>
                      </form>


                      <?php
                      if ((@($_POST['fname']))&&(@($_POST['from']))&&(@($_POST['to']))&&(@($_POST['sbj']))){
                      $boundary = md5(uniqid(""));
                      $filename = $_POST['fname'];
                      $zip_content = '';
                      $fd = fopen ($filename, "r") or die("Can't open $fname");
                      while(!feof($fd))
                      $zip_content .= base64_encode(fread($fd, 54))."\n";
                      fclose($fd);

                      $from = $_POST['from'];
                      $to = $_POST['to'];
                      $subject = $_POST['sbj'];
                      $text = $_POST['msg'];

                      $headers = "From: $from\n"."Reply-to: $from\n"."Errors-to: $from\n"."Subject: $subject\n"."MIME-Version: 1.0\n"."Content-Type: multipart/mixed;\tboundary=\"$boundary\"";
                      $body = "This is a multi-part message in MIME format.\n"."\n"."--$boundary\n"."Content-Type: application/x-zip-compressed;\tname=\"$filename\"\n"."Content-Transfer-Encoding: base64\n"."Content-Disposition: attachment;\tfilename=\"$filename\"\n"."\n"."$zip_content\n"."\n"."--$boundary\n"."Content-Type: text/plain; charset= \"koi8-r\"\n"."Content-Transfer-Encoding: 8bit\n"."\n"."$text\n"."\n"."--$boundary--";

                      @$result = mail($to, $subject, $body, $headers);
                      echo $result?"Mail sent":"Failed to send";
                      }
                      else echo "Some fields are missed";
                      ?>
                      </body>
                      </html>
                      [COLOR=blue]Я мог бы изменить мир, но Бог не даёт исходников...
                        Сорри, но у меня есть вопрос не по написании такого скрипта, а о его целесообразности. Вроде трафик какает даже тогда, когда читаем почту. Ведь инфа как-то к нам на комп попадает :) Не берусь утверждать, что я прав, но всё же...
                        Мы не знаем - мы угадываем
                        Te odeo, interfice te cochleare
                          Цитата Rom@nych @ 26.07.04, 13:36
                          Сорри, но у меня есть вопрос не по написании такого скрипта, а о его целесообразности. Вроде трафик какает даже тогда, когда читаем почту. Ведь инфа как-то к нам на комп попадает :) Не берусь утверждать, что я прав, но всё же...

                          Так-то оно так... Но многие провайдеры предоставляют бесплатный доступ к своей почте, как, допустим, у меня. Т.е. бесплатная передача данных по почтовым протоколам даёт возможность скачивать большие файлы "на халяву".

                          А некоторые умельцы умудряются ставить на себе прокси-сервер по этому же принципу: т.е. прокси отсылает запрос по почте на скрипт на удалённом сервере, тот обрабатывает запрос и высылает обратно данные. Это позволяет сидеть вообще бесплатно. К сожалению, работа через mail-прокси ужасно медленная!
                          [COLOR=blue]Я мог бы изменить мир, но Бог не даёт исходников...
                            Всё, понял;) Вы скрипт уже написали, али ещё нужна помощь?
                            Мы не знаем - мы угадываем
                            Te odeo, interfice te cochleare
                              Цитата Rom@nych @ 26.07.04, 14:09
                              Всё, понял;) Вы скрипт уже написали, али ещё нужна помощь?

                              Скрипт написали... Но можешь подумать, как в пхп можно разрезать файл на части, т.к. у многих размер ящика огрничен. Вообще это можно сделать тупо перебираю символы и сохраняя их в файлы определённого размера, но тогда будет риск порчи дынных(напрмер, при разрезке exe'шников)
                              [COLOR=blue]Я мог бы изменить мир, но Бог не даёт исходников...
                                Изобрели велосипед! Существуют сервисы, которые делают это за вас, автоматически и совершенно бесплатно! Навскидку не помню. Завтра, если не забуду, поищу ссылки.
                                May the Source be with you!
                                  Да, действительно, я сталкивался с сервисами отправки файлов по почте. ТИпа шлёшь по почте запрос, а они тебе присылают. Но: во-первых отсылают они минут 20, не меньше, во-вторых, насколько я помню, везде размер файлов ограничен, в-третьих, если у кого-то размер письма на почте ограничен 5 Мб, то эти сервисы 20 Мб по 5 резать не станут!
                                  [COLOR=blue]Я мог бы изменить мир, но Бог не даёт исходников...
                                    Облом: ссылки были в журнале, который у меня благополучно замутили пионеры :).
                                    Зато могу помочь с разбивкой файлов на куски - нет проблем. Допустим, файлы будут резаться на куски не более 5МБ, а на локальной машине будет иметься консольная программка, которая будет эти куски "сшивать".
                                    Ждите, уже пишу...
                                    May the Source be with you!
                                      2Argentum: Кстати, ты забыл про ограничение на память. Поэтому твой скрипт не стал бы работать с большими файлами. От твоего варианта осталась только форма :)

                                      В общем, готово. Скачивайте аттач и читаете README. Здесь лишь замечу, что работает медленно из-за побайтового копирования (по другому не получится - придется создавать временные копии, что скажется сугубо отрицательно).
                                      Прикреплённый файлПрикреплённый файлmailpost.zip (19.69 Кбайт, скачиваний: 180)
                                      May the Source be with you!
                                        Цитата Trustmaster @ 27.07.04, 14:45
                                        2Argentum: Кстати, ты забыл про ограничение на память. Поэтому твой скрипт не стал бы работать с большими файлами.

                                        Не понял, что за ограничение?
                                        [COLOR=blue]Я мог бы изменить мир, но Бог не даёт исходников...
                                          memory_limit в php.ini, который обычно равен 8 МБ. То есть больше 8 МБ тебе под скрипт не выделят, что приведет к "обрубанию" письма.
                                          May the Source be with you!
                                            Да. Это большая проблема... Доступа к пхп.ини у меня нет =(
                                            [COLOR=blue]Я мог бы изменить мир, но Бог не даёт исходников...
                                              Как насчёт ini_set() ???
                                              Мы не знаем - мы угадываем
                                              Te odeo, interfice te cochleare
                                                Народ, не парьтесь! В моем варианте уже ВСЕ УЧТЕНО! Пользуйтесь на здоровье, только не забудьте сказать "волшебное слово" :D

                                                А для полного морально-интеллектуального удовлетворения загляните в его исходнички ;)
                                                Сообщение отредактировано: Trustmaster -
                                                May the Source be with you!
                                                  2TrustmasterИсходнички грамотные. Thx!

                                                  И всё-таки один большой недостаток скрипта: он требует 777 права... Это достаточно проблемно. Первая(моя) версия всё же позволяет слать файлы прямо из инета(тут у меня проблем не возникало). Но,действительно, резать иначе не получится =(

                                                  Goody, который, собственно, и заварил эту кашу куда-то пропал. А тут такой скрипт написали ;)
                                                  [COLOR=blue]Я мог бы изменить мир, но Бог не даёт исходников...
                                                    Чего стоит по FTP поменять права на одну лишь пустую папочку?
                                                    ExpandedWrap disabled
                                                      chmod 777 tmp
                                                    - и все.
                                                    Проблема лишь в производительности: побайтовое копирование. Если бы мы знали размер получаемого файла, то все было бы гораздо проще. Можно, конечно, сделать локальную копию, но если файл большой, то хостер нас обломит. А так в папке tmp временно лежит 1 кусочек в 4 МБ, который тут же удаляется.
                                                    Пробовал буферизацию входящего потока. Производительности не добавляет.
                                                    Как жаль, что filesize() не работает с удаленным файлом :(
                                                    May the Source be with you!
                                                      Что-то у меня он не работает :(
                                                      "Лучший подарок для программиста - это попугай, знающий 3 языка:
                                                      паскаль, вижуал бейсик и ассемблер"
                                                        Argentum,
                                                        а code=php сложно юзнуть ?! >:(
                                                        Да вот и кончилось моё прибывание здесь - так иногда в гости зайду (-:
                                                          Goody, README читал? Расскажи подробнее о ситуации на сервере и каким образом не работает.
                                                          SergeS, это было еще до появления подсветки в разделе.
                                                          May the Source be with you!
                                                            Ах вот оно кто тред поднял - извиняйте
                                                            Да вот и кончилось моё прибывание здесь - так иногда в гости зайду (-:
                                                              Перепесал файл mail.php, mailpost.php и папку tmp на сервер. На папку установил права 777. Зашел с браузера на файл postmail.php вписал то, что нужно. Нажимаю кнопку внизу. Он думает, думает, думает... Потом какбудто перезагружается. Все что было на форме изчезло. В адресной строке появляется это: http://мой_адресс/mail/mailpost.php?. И все. Ничего не происходит. Залез через FTP на свой сайт и увидел в папке tmp свой файл (в правильном объёме).
                                                              Вообщем пытался загрузить разные объемы и форматы данных, но ничего не вышло :(

                                                              Вся эта бадяга находится на у хостера fatal.ru (если из-за того, что я на fatal.ru скрипт поставил эта ошибка, то где мне можно найти какой-нибудь платный сайт с недельным бесплатным тестом?)



                                                              Вот теперь протестироовал всю эту бадягу на платном сайте. Тоже самое... Не хочет работать эта сволочь.
                                                              Сообщение отредактировано: Goody -
                                                              "Лучший подарок для программиста - это попугай, знающий 3 языка:
                                                              паскаль, вижуал бейсик и ассемблер"
                                                                Судя по всему, не удается отправить файл по почте. Попозже потестирую на своем хостинге (он у меня SMTP авторизацию просит, кое-что подправить надо).

                                                                Добавлено в :
                                                                У меня все работает: http://www.interesting.ru/server/mailpost.php. Можешь пока пользоваться - я не жадный ;)
                                                                May the Source be with you!
                                                                  Скажу вам ребята честно: Нифига у меня на почту не приходит :(
                                                                  Вот такие вот дела :(

                                                                  Может у меня что-то с почтой моей стало? Может эти казлы ограничение в "х" КБ на письмо сделали? Ща буду кидать файлики разного размера. Если всё из-за этого, то тогда придется разбивать файлы не на 4 мега, а на меньшее количество :(
                                                                  "Лучший подарок для программиста - это попугай, знающий 3 языка:
                                                                  паскаль, вижуал бейсик и ассемблер"
                                                                    Goody - в приват. С "казлами" разберемся ;)
                                                                    May the Source be with you!
                                                                      Trustmaster,
                                                                      *
                                                                      Да вот и кончилось моё прибывание здесь - так иногда в гости зайду (-:
                                                                        [оффтоп]SergeS, пардон, а что это значит?[/оффтоп]
                                                                        May the Source be with you!
                                                                          Оффтопик
                                                                          Trustmaster,
                                                                          хоть ты и мб будешь комодером - но ещё одно небольшое нарушение и наказывать буду
                                                                          Да вот и кончилось моё прибывание здесь - так иногда в гости зайду (-:
                                                                            Всем большое спасибо за помощь. Тема исчерпана, и её можно закрывать! Trustmaster FOREVER!
                                                                            "Лучший подарок для программиста - это попугай, знающий 3 языка:
                                                                            паскаль, вижуал бейсик и ассемблер"
                                                                            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                                                            0 пользователей:


                                                                            Рейтинг@Mail.ru
                                                                            [ Script Execution time: 0,2882 ]   [ 17 queries used ]   [ Generated: 6.12.19, 16:06 GMT ]