Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: разработка для Web > хорошо бы помощи от программеров


Автор: ponch 27.2.2003, 08:29
подскажите пожалуйста знающие люди сверх начинающему программеру. Дело в том, что у меня в сети почта беспланая, то есть могу получать файлы по почте через инет бесплатно, не учитывается трафик. Мне нужен скрипт который делал бы следующее: у меня есть бесплатный хостинг, я заливаю скрипт с веб интерфейсом, захажу на него ввожу ссылку файла который надо скачать, и свою почту, после чего этот фаил падает мне на мыло бесплатно.
Знающие люди, подскажите пожалуйста, я очень прошу, а лучше дайте код проги.
Заранее благодарен..

Автор: HalkaR 28.2.2003, 02:39
Код
use MIME::QuotedPrint;
use MIME::Base64;
use Mail::Sendmail;

$message = qq[Текст сообщения];
$boundary = "====" . time() . "====";

 %mail = ( To      => 'ТВОЙ АДРЕСС',
           From    => '"Bill Gates" <[email protected]>',
           Subject => 'Сабдж',
    'Content-Type' => "multipart/mixed; boundary=\"$boundary\" charset=koi8-r",
    'Content-Transfer-Encoding' => '8bit',
    'X-Mailer' => 'Microsoft Outlook Express 6.00.2600.0000',
    smtp    => 'Адрес твоего почтового сервака, например smtp.mail.ru',
    'X-MSMail-Priority' => 'High');


$file = ''; #Здесь пишешь название файла, которы отправляешь.

open (F, $file) or die "Cannot read $file: $!";
binmode F; undef $/;
$mail{body} = encode_base64(<F>);
close F;

$boundary = '--'.$boundary;
$mail{body} = <<END_OF_BODY;
$boundary
Content-Type: text/html; charset="koi8-r"
Content-Transfer-Encoding: 8bit

$message
$boundary
Content-Type: application/octet-stream; name="$file"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="$file"

$mail{body}
$boundary--
END_OF_BODY


 sendmail(%mail) or die $Mail::Sendmail::error;



 print "OK. Log says:\n", $Mail::Sendmail::log;
А файл закачать на сервер не вопрос.

Автор: Unregistered 28.2.2003, 05:45
Огромное тебе спасибо HalkaR, ты прямо спас, хотя скрипт я еще не проверял, но спасибо тебе за твою помощь!!!
Вот таких программеров побольше!

Автор: ponch 28.2.2003, 07:17
Вы понимаете, мне нужно, чтоб скрипт мог кидать файлы на мыло по задонному url этого файла. А как я понял, этот скрипт данног не делает.
То есть есть http страница с полями e-mail и file-url. Я понимаю что может я слишком многово хочу, но я гипер начинающий и знаю только hello world.
Если вас не затруднить, не могди бы еще раз помочь, пожалуйста.

Автор: HalkaR 2.3.2003, 03:50
Код
use MIME::QuotedPrint;
use MIME::Base64;
use Mail::Sendmail;
use LWP::Simple;

$message = qq[Текст сообщения];
$boundary = "====" . time() . "====";

%mail = ( To      => 'ТВОЙ АДРЕСС',
          From    => '"Bill Gates" <[email protected]>',
          Subject => 'Сабдж',
   'Content-Type' => "multipart/mixed; boundary=\"$boundary\" charset=koi8-r",
   'Content-Transfer-Encoding' => '8bit',
   'X-Mailer' => 'Microsoft Outlook Express 6.00.2600.0000',
   smtp    => 'Адрес твоего почтового сервака, например smtp.mail.ru',
   'X-MSMail-Priority' => 'High');


$file = ''; #Здесь пишешь название файла, которы отправляешь.

$mail{body} = get('Адрес файла') or die "no such file: $!";

$boundary = '--'.$boundary;
$mail{body} = <<END_OF_BODY;
$boundary
Content-Type: text/html; charset="koi8-r"
Content-Transfer-Encoding: 8bit

$message
$boundary
Content-Type: application/octet-stream; name="$file"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="$file"

$mail{body}
$boundary--
END_OF_BODY


sendmail(%mail) or die $Mail::Sendmail::error;



print "OK. Log says:\n", $Mail::Sendmail::log;
Должно работать, правда не тестировал.

Автор: ponch 2.3.2003, 04:36
Искреннее спасибо

Автор: антон 2.3.2003, 22:19
У меня это скрипт выдает, каогда я залил его на сервер, выдает такую ошибку:
CGI приложение доступно на запись другим пользователям. Для выполнения оно должно иметь права 0755 или 0711.

Атрибуды этому файлу я поставил правлеьные.

Это perl скрипт, я окрыл редактор перла, втавил его туда, вверху написал правельный путь к интерпритатору, но вод такая ошибка, может надо было еще что-то менять в самом скрипте?

Автор: Unregistered 3.3.2003, 03:45
Насчет работоспособности: на сервере как минимум дожен быть модуль Mail::Sendmail. Проверьте.
Посчет прав ничего сказать не могу - сам запускал его по Win2000.
Кроме того в поле from для большенства реальных серверов надо писать реальный адрес на этом сервере.

Автор: Unregistered 3.3.2003, 03:48
Единственная проблма может быть со скачиванием файла при помощи LWP. Все остальное работает точно.

Автор: ponch 3.3.2003, 03:52
То есть сам скрипт точно работаспособный?

И он точно будет отправлять файлы мне на мыло по задонному Url, если эти файлы находятся на других серверах?

И предположем что этим скриптом не я один буду пользоваться, мне нужно будет править сам скрипт, дабы изменить адрес получателя?

Вот если бы была web форма с двумя полями e-mail и url-файла, это будет супер.

Извините за глупые вопросы, просто я много чего еще не догоняю.
Спасибо большое за помощь

Автор: HalkaR 3.3.2003, 04:59
1)Первый скрипт, который я написал точно будет отправлять файл, находящийся на сервере. За второй я ничего скачть не могу, потому, что не уверен в том, как будет работать функция get. Тут надо уточнить у нашего глубокоуважаемого админа.
2)ponch, всетаки надо потихоньку учится. Всю жизнь питаться чужими скриптами не получится.

Автор: ponch 3.3.2003, 05:40
Я понимаю, вот и книг себе накупил уже, будем учится...

Автор: ixor 19.3.2003, 02:02
я так понимаю строчка
"$mail{body} = get('Адрес файла') or die "no such file: $!";" запихивает в бодиsmile.gif
она его текстом приложит или как атачмент писоединит?
извините за глупый вопрос но с MAILом не копался ниразу, просто интересноsmile.gif

Автор: HalkaR 19.3.2003, 02:28
Файл пошлется аттачментом. Как ни странно. В боди кидается все что не является служебной информацией. Посмотри исходник какого-нибудь письма с аттачментом и увидишь, что там весь файл в двоичном коде тестом записан.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)