Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.141.41.187] |
|
Страницы: (3) [1] 2 3 все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
Хай пиплы!
У меня появилась одна интерестная мысля! Итак, сначала историю: У меня есть выделинка 10 Мбит в секунду. За каждый входящий мегабайт я плачу 0.07 доллара (7 центов). Иногда бывают файлы мегов по 20-30, которые очень хочется скачать в инете, но на это очень жалко денег Вот я о чем и вспомнил: У меня есть почтовый ящик от моего провайдера, который мне предоставляет выделеный доступ в интернет. Размер ящика неограниченый и размер приходящего письма тоже (отправляли 40 с лишнем мегов, и проходило. А так хз). Ну вот, я и подумал, почему бы не взять какой-нибудь сайт на хостинге типа fatal.ru и не сделать скрипт, который сначало загружает файл с какого-нибудь сайта к себе (например с сайта www.download.ru/test.zip на test.fatal.ru), а потом от себя кидает этот файл по почте мне. Вроде это реально... Или у меня бред? Высказывайте свои мнения, так как мне очень нужно высосать несколько сотен мегов из инета. Спасибо за прочтение! |
Сообщ.
#2
,
|
|
|
Я как-то занимался подобным - на сайте знакомого поставил PHP скрипт, в котором скачивал файл с инета на сервер, отсылал письмо с аттачем себе на мыло, потом удалял письмо. Кодов, к сожалению, не осталось =(
|
Сообщ.
#3
,
|
|
|
Цитата Argentum @ 25.07.04, 22:15 Я как-то занимался подобным - на сайте знакомого поставил PHP скрипт, в котором скачивал файл с инета на сервер, отсылал письмо с аттачем себе на мыло, потом удалял письмо. Кодов, к сожалению, не осталось =( Тоесть это более чем реально? Хммм... Надо срочно браться за работу! Argentum, большое тебе спасибо за совет! |
Сообщ.
#4
,
|
|
|
Цитата Тоесть это более чем реально? Хммм... Надо срочно браться за работу! Если возникнут проблемы при создании скрипта - обращайся! |
Сообщ.
#5
,
|
|
|
Цитата Argentum @ 25.07.04, 22:19 Цитата Тоесть это более чем реально? Хммм... Надо срочно браться за работу! Если возникнут проблемы при создании скрипта - обращайся! Уже возникли . У тебя ася есть? |
Сообщ.
#6
,
|
|
|
Цитата Goody @ 25.07.04, 22:22 У тебя ася есть? 211094963 Добавлено в : Копирование файла на сервер: if (!copy("http://forum.sources.ru/uploads/av-6879.gif", 'tmp.gif')) { print ("failed to copy ...\n"); } Отправка файла на мыло: <?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 ?> Дерзай..удачи в покорении Инета Добавлено в : (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 Тема - пример: ... Нет, все же лучше не комментировать... |
Сообщ.
#7
,
|
|
|
Как загнать файл на сервак, я разобрался. А вот как кинуть этот файл по почте нет
|
Сообщ.
#8
,
|
|
|
Вообще ничего не получается, полный отстой.
|
Сообщ.
#9
,
|
|
|
Вынеси один из классов, которые я тебе дал, в отдельный файл(допустим, mail.php) и включи его в главном скрипте include 'mail.php'; Далее просто используй функции класса, подставляя при этом свои пременные.
|
Сообщ.
#10
,
|
|
|
Вот: написал скрипт...сделал чуть проще.
Наслаждайся! ) <html> <header><title>Mailpost server</title></header> <body> <font size=4><b>VIP MAIL SERVER</b></font> <form method=POST action='?'> To: <input type='text' name='to'></input><br> From: <input name='from'type='text' value='VIP@mail.ru'></input><br> Subject: <input size=50 name='sbj'type='text' value='Cool'></input><br> Include: <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: <input type='text' name='to'></input><br> From: <input name='from'type='text' value='VIP@mail.ru'></input><br> Subject: <input size=50 name='sbj'type='text' value='cool'></input><br> Include: <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> |
Сообщ.
#11
,
|
|
|
Сорри, но у меня есть вопрос не по написании такого скрипта, а о его целесообразности. Вроде трафик какает даже тогда, когда читаем почту. Ведь инфа как-то к нам на комп попадает Не берусь утверждать, что я прав, но всё же...
|
Сообщ.
#12
,
|
|
|
Цитата Rom@nych @ 26.07.04, 13:36 Сорри, но у меня есть вопрос не по написании такого скрипта, а о его целесообразности. Вроде трафик какает даже тогда, когда читаем почту. Ведь инфа как-то к нам на комп попадает Не берусь утверждать, что я прав, но всё же... Так-то оно так... Но многие провайдеры предоставляют бесплатный доступ к своей почте, как, допустим, у меня. Т.е. бесплатная передача данных по почтовым протоколам даёт возможность скачивать большие файлы "на халяву". А некоторые умельцы умудряются ставить на себе прокси-сервер по этому же принципу: т.е. прокси отсылает запрос по почте на скрипт на удалённом сервере, тот обрабатывает запрос и высылает обратно данные. Это позволяет сидеть вообще бесплатно. К сожалению, работа через mail-прокси ужасно медленная! |
Сообщ.
#13
,
|
|
|
Всё, понял;) Вы скрипт уже написали, али ещё нужна помощь?
|
Сообщ.
#14
,
|
|
|
Цитата Rom@nych @ 26.07.04, 14:09 Всё, понял;) Вы скрипт уже написали, али ещё нужна помощь? Скрипт написали... Но можешь подумать, как в пхп можно разрезать файл на части, т.к. у многих размер ящика огрничен. Вообще это можно сделать тупо перебираю символы и сохраняя их в файлы определённого размера, но тогда будет риск порчи дынных(напрмер, при разрезке exe'шников) |
Сообщ.
#15
,
|
|
|
Изобрели велосипед! Существуют сервисы, которые делают это за вас, автоматически и совершенно бесплатно! Навскидку не помню. Завтра, если не забуду, поищу ссылки.
|