Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: разработка для Web > Как скриптом ПОЛУЧИТЬ почту?


Автор: *eug* 16.12.2003, 21:32
Как получить почту скриптом?

Автор: Nobody 16.12.2003, 23:41
http://search.cpan.org/author/SDOWD/Mail-POP3Client-2.15/POP3Client.pm

Автор: Nobody 16.12.2003, 23:42
Юзайте http://search.cpan.org!

Автор: Bolat 8.4.2005, 08:56
Приветы.

Я завел ящик на mail.ru,

ЛогИн: 'lamerizlamerov'
Пароль: '7777777'

Мне нужно скриптом подключится к ящику и считать оттуда количество писем (для начала).

Я использую Mail::POP3Client (так как другие модули я установить не смог):
Код

#!/usr/bin/perl

use Mail::POP3Client; 

$login = "lamerizlamerov";
$pass = "7777777";
$host = "http://www.pop3.mail.ru";

print "Content-type: text/html\n\n";

my $pop = new Mail::POP3Client( USER      => $login, 
                                PASSWORD  => $pass, 
                                HOST      => $host, 
                                AUTH_MODE => "PASS", 
                                DEBUG=>0 ); 
 

if (my $popCount=$pop->Count() == -1 ) { 
print "Bad connect!"; 
} else { 
print "In your box ",$pop->Count()," messages.<br>n"; 
}


После запуска скрипта выдается: Bad connect!. То есть неполучается законектится к ящику.
Подскажите плиз что я делаю неправельно?
Может ктонить попробует у себя законектится ИМЕННО К МОЕМУ ЯЩИКУ(login = "lamerizlamerov", pass = "7777777"), и потом скажет мне, как это у него получилось, буду очень благодарен. smile.

Автор: chaos 8.4.2005, 09:33
Цитата(Bolat @ 8.4.2005, 08:56)
Приветы.

Я завел ящик на mail.ru,

ЛогИн: 'lamerizlamerov'
Пароль: '7777777'

Мне нужно скриптом подключится к ящику и считать оттуда количество писем (для начала).

Я использую Mail::POP3Client (так как другие модули я установить не смог):
Код

#!/usr/bin/perl

use Mail::POP3Client; 

$login = "lamerizlamerov";
$pass = "7777777";
$host = "http://www.pop3.mail.ru";

print "Content-type: text/html\n\n";

my $pop = new Mail::POP3Client( USER      => $login, 
                                PASSWORD  => $pass, 
                                HOST      => $host, 
                                AUTH_MODE => "PASS", 
                                DEBUG=>0 ); 
 

if (my $popCount=$pop->Count() == -1 ) { 
print "Bad connect!"; 
} else { 
print "In your box ",$pop->Count()," messages.<br>n"; 
}


После запуска скрипта выдается: Bad connect!. То есть неполучается законектится к ящику.
Подскажите плиз что я делаю неправельно?
Может ктонить попробует у себя законектится ИМЕННО К МОЕМУ ЯЩИКУ(login = "lamerizlamerov", pass = "7777777"), и потом скажет мне, как это у него получилось, буду очень благодарен. smile.

по моему еще нужно вызывать методы Alive() и POPStat()

Автор: Bolat 8.4.2005, 12:26
chaos
А для чего эти методы и как их использовать?

Автор: chaos 8.4.2005, 13:10
Цитата(Bolat @ 8.4.2005, 12:26)
chaos
А для чего эти методы и как их использовать?


короче я перепутал маленько ничего дописывать не надо!!!
у тебя косяк в сторчке
$host = "http://www.pop3.mail.ru";
те надо написать
$host = "pop3.mail.ru";и тогда ввсе будет хорошо, кстати у тебя там 2 письма)))

Автор: Bolat 8.4.2005, 15:05
chaos
Я у себя исправил на $host = "pop3.mail.ru".
Но у меня пишет "Bad connect!"
Скинь плиз тот скрипт которым ты узнал что у меня 2 письма.
А то я пишу:
Код

#!/usr/bin/perl

use Mail::POP3Client; 

$login = "lamerizlamerov";
$pass = "7777777";
$host = "pop3.mail.ru";

print "Content-type: text/html\n\n";

my $pop = new Mail::POP3Client( USER      => $login, 
                                PASSWORD  => $pass, 
                                HOST      => $host, 
                                AUTH_MODE => "PASS", 
                                DEBUG=>0 ); 
 

if (my $popCount=$pop->Count() == -1 ) { 
print "Bad connect!"; 
} else { 
print "In your box ",$pop->Count()," messages.<br>n"; 
}

Может у меня чото нето с настройками....

Автор: chaos 9.4.2005, 08:18
Код

#!/usr/bin/perl

use Mail::POP3Client; 

$login = "lamerizlamerov";
$pass = "7777777";
$host = "pop3.mail.ru";

print "Content-type: text/html\n\n";

my $pop = new Mail::POP3Client( USER      => $login, 
                                PASSWORD  => $pass, 
                                HOST      => $host, 
                                AUTH_MODE => "PASS", 
                                DEBUG=>0 ); 
 

if (my $popCount=$pop->Count() == -1 ) { 
print "Bad connect!"; 
} else { 
print "In your box ",$pop->Count()," messages.<br>n"; 
}



ну вот он!! этот скрипт работает, ПРОВЕРЯЛ!!!!

Автор: Vaneska 10.4.2005, 19:56
Посмотри тему http://forum.vingrad.ru/index.php?showtopic=45716. Там есть скрипт, но с использованием Net::POP3.pm

Автор: Bolat 11.4.2005, 09:42
Вообщем не пашет у меня.

Я вообще с Perloom знаком плохо...

Вообщем я сделал так:
Файл с кодом:
Код

#!/usr/bin/perl

use Mail::POP3Client; 

$login = "lamerizlamerov";
$pass = "7777777";
$host = "pop3.mail.ru";

print "Content-type: text/html\n\n";

my $pop = new Mail::POP3Client( USER      => $login, 
                                PASSWORD  => $pass, 
                                HOST      => $host, 
                                AUTH_MODE => "PASS", 
                                DEBUG=>0 ); 
 

if (my $popCount=$pop->Count() == -1 ) { 
print "Bad connect!"; 
} else { 
print "In your box ",$pop->Count()," messages.<br>n"; 
}

сохранил под именем "test.cgi" в папке:
"C:\Program Files\Apache Group\Apache\cgi-bin"

Теперь в браузере запускаю адрес:
"http://localhost/cgi-bin/test.cgi"

И все. Мож я чото неправельно сделал или недоделал?




Автор: korob2001 11.4.2005, 11:04
Цитата

И все. Мож я чото неправельно сделал или недоделал?

И что ты видешь в браузере??? Если ничего, то ищи файл error.log, как правило он находится в корне.

Автор: Bolat 11.4.2005, 11:23
korob2001
Я вижу в браузере 'Bad conect':
Код

... if (my $popCount=$pop->Count() == -1 ) { 
print "Bad connect!"; ...

Автор: chaos 11.4.2005, 13:38
Цитата(Bolat @ 11.4.2005, 11:23)
korob2001
Я вижу в браузере 'Bad conect':
Код

... if (my $popCount=$pop->Count() == -1 ) { 
print "Bad connect!"; ...

а может надо указать полное имя, ну те
$login = '[email protected]';?

Автор: korob2001 11.4.2005, 15:32
Цитата

а может надо указать полное имя, ну те
$login = '[email protected]';?

smile Угу, ну и пароль тоже не мешало бы указать свой.

Автор: Bolat 12.4.2005, 06:06
korob2001
Я и указал
Все же в коде есть:
Код

$pass = "7777777";


Я думаю может там какие настройки с Perlom или какими нибудь разрешениями ФайрВола ...

Автор: chaos 12.4.2005, 09:23
интересные штуки происходят))) у меня все работает а у человека не работает smile
А у тебя 110 порт случаем не зафильтрован???

Автор: Bolat 12.4.2005, 12:37
chaos
Цитата
интересные штуки происходят))) у меня все работает а у человека не работает 

Вот ты здеся ржеш а я психую.
Цитата
А у тебя 110 порт случаем не зафильтрован???

Не знаю. Как это проверить?
И не скажеш где у тебя лежит cgi-файл с вышеупомянутым кодом? И как ты его запускаеш?
я кидаю в
"C:\Program Files\Apache Group\Apache\cgi-bin"
и запускаю в брауере
'localhost\cgi-bin\perlFile.cgi'


Автор: korob2001 12.4.2005, 15:11
Таким способом попробуй:
Код

#!/usr/bin/perl -w
use strict;
use Net::POP3;
my( $host, $login, $pass ) = ( shift, shift, shift );
my $pop = Net::POP3->new($host) || die $!;
$pop->user($login);
print "You have ", $pop->pass($pass), " messages in mail box. \n";
$pop->quit;

Ложишь скрипт куда угодно, лишь бы Perl был установлен. Затем в командной строке даёшь такую команду:
C:\>perl C:\script.pl pop.mail.ru login password
Естественно нужно будет указать свой сервер, логин и пароль.

Удачи.

Автор: Bolat 13.4.2005, 06:00
korob2001
Нужно отдельно установить модуль Net::POP3?

Чото неустанавливается(через ppm.bat).
А ты как устанавливал?

Автор: korob2001 13.4.2005, 06:27
Он входит в стандартный пакет Perl, потому его устанавливать, как правило, не нужно. Попробуй через командную строку запросить документацию к нему:

C:\>perldoc Net::POP3

Если увидишь документацию, значит модуль установлен и готов к использованию.

Можно так же проверить наличие модуля такой командой:

C:\>perl -e "use Net::POP3"

Если после выполнения этой команды ты не увидешь примерно такой ошибки:

Can't locate Net/POP3.pm in @INC (@INC contains: C:/Perl/usr/lib C:/Perl/usr/site/lib . ) at -e line 1.
BEGIN failed--compilation aborted at -e line 1.

Это будет говорить отом, что модуль у тебя установлен.

Удачи.

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