Forum Webscript.Ru
Программирование => Perl => Тема начата: 09h от 01 Июня 2006, 17:35:55
-
бред какойто ... много раз пользовался sendmail`ом никогда проблем не возникало... вот небольшой скрипт для теста который все время работал и перестал
#!/usr/bin/perl
my $from = "09h\\@mail.ru";
my $from_name = "09h";
my $to = "admin\\@iron26.ru";
my $to_name = "Your";
my $subject = "aaaaaa";
my $text = "aaaaaaaaaaaaaaaaaaa";
open (MAIL, "|/usr/sbin/sendmail -t");
print MAIL "From: $from_name <$from>\\n";
print MAIL "To: $to_name <$to>\\n";
print MAIL "Content-Type: text/html; charset=\\"Windows-1251\\"\\n";
print MAIL "Subject: $subject\\n\\n";
print MAIL "$text";
close (MAIL);
print "Content-type: text/html\\n\\n";
print "send to $to !";
1. не выдает никаких ошибок
2. не отправляет с машины вообще ничего (снифером смотрел)
пробовал запускать на работе, дома и еще на 2-х хостах дома и на работе стоит винхр, денвер... раньше на тока поставленной винде и денвере все работало а ща не хотит...
Что за мистика такая??? че делать? я в ужасе
-
скачал денвера последнюю версию тоже самое
а через Net::SMTP есть у ковонить живой пример отправки писем?
через свой smtp сервер отправляются письма только на адреса с темже доменом ...
нужно отправлять письма на мэил.ру
-
В документации к модулю есть живой пример отправки писем.
-
сделал на io::socket::inet но с сендмэйлом так и не понял что за глюк ) уже на 7 компутерах попробовал ... везде без ошибок и при этом вообще ничего не уходит в инет
-
Логи читать мейлсервера нужно.
Или запускать Net::SMTP с опцией Debug => 1
-
#!/usr/bin/perl -wT
use IO::Socket::INET;
$mailserver = "smtp.mail.ru";
print "Content-type: text/html\\n\\n";
$sock = IO::Socket::INET->new(PeerAddr => "$mailserver:smtp(25)", Timeout => \'4\');
sysread $sock,$answer_data,255;
print "1: $answer_data
";
syswrite $sock, "helo $mailserver\\r\\n";
sysread $sock,$answer_data,255;
print "2: $answer_data
";
syswrite $sock, "MAIL FROM: <09h\\@mail.ru> AUTH=09h\\@mail.ru\\r\\n";
sysread $sock,$answer_data,255;
print "3: $answer_data
";
syswrite $sock, "RCPT TO:\\r\\n";
sysread $sock,$answer_data,255;
print "4: $answer_data
";
syswrite $sock, "DATA\\r\\n";
sysread $sock,$answer_data,255;
print "5: $answer_data
";
syswrite $sock, "Blah blah blah...\\r\\n";
syswrite $sock, "...etc. etc. etc.\\r\\n";
syswrite $sock, ".\\r\\n";
sysread $sock,$answer_data,255;
print "6: $answer_data
";
syswrite $sock, "QUIT\\r\\n";
sysread $sock,$answer_data,255;
print "7: $answer_data
";
close $sock;
чтото я с AUTH не пойму ничего...
отвечает
1: 220 mail.ru ESMTP Thu, 01 Jun 2006 20:43:43 +0400
2: 250 mx6.mail.ru Hello smtp.mail.ru [212.96.102.250]
3: 250 OK
4: 250 Accepted
5: 354 Enter message, ending with "." on a line by itself
6: 550 Message was not accepted -- invalid mailbox. Local mailbox AUTH=09h@mail.ru is unavailable: user not found
7: 221 mx6.mail.ru closing connection
бывают вообще smtp сервера без авторизации? как сделать эту авторизацию? что неправильно сделал?
-
На сколько мне известно, чтобы посылать через мейл.ру нужно иметь ящик у них, и потом посылается без всякой авторизации, по крайней мере у меня.
-
ну MAIL FROM: 09h@mail.ru ведь и так на мэил.ру
а если без AUTH=... тогда сразу говорит
1: 220 mail.ru ESMTP Sat, 03 Jun 2006 15:00:54 +0400
2: 250 mx3.mail.ru Hello smtp.mail.ru [212.96.102.107]
3: 250 OK
4: 250 Accepted
5: 503 Administrative prohibition -- authorization required. Users in your domain are not allowed to send email without authorization. See http://www.mail.ru/pages/help/261.html for details.
6: 500 unrecognized command
7: 500 unrecognized command 500 unrecognized command
-
че делать? как быть?
-
Посмотрите ПС.
-
что за ПС? мона без сокращения ?)
гы ) кажись понял что нужно ... снифер как всегда рулит ))
-
perldoc MIME::Lite
http://search.cpan.org/~yves/MIME-Lite-3.01/lib/MIME/Lite.pm
Посмотри, может не стоит заморачиваться, а проще воспользоваться модулем?
-
09h:
че делать? как быть?
Это пять. Товарищь, не мучай снифер почем зря, открой ссылку что сервер тебе выдал, читай вдумчиво и напиши так как указано. Сервер тебе все человеческим языком говорит, только читай и думай.
xames, это немного из другой оперы, но модуль полезнай.
Решение:
use Net::SMTP_auth;
$smtp = Net::SMTP_auth->new(\'smtp.mail.ru\', Debug => 1);
$smtp->auth(\'CRAM-MD5\', \'09h@mail.ru\', \'ТВОЙ ПАРОЛЬ\');
$smtp->mail(\'09h@mail.ru\');
$smtp->to(\'09h@mail.ru\'\');
$smtp->data();
$smtp->datasend("To: 09h\\@mail.ru \\n");
$smtp->datasend("\\n");
$smtp->datasend("A simple test message\\n");
$smtp->dataend();
$smtp->quit;
-
09h:
что за ПС? мона без сокращения ?)
Однако, Вы даже форумом пользоваться не умеете? Посмотрите на последнюю строчку любого сообщения в форуме. А расшифровывается это как "Персональное сообщение". Чтобы посмотреть пришедшие сообшения на Ваше имя выберете соответствующий пункт в выпадающем меню "Навигация".
-
vladsu, меня любопытство замучало, что ты в ПС написал таког что нельзя было в форуме, а, поделись?
-
всем спасибо за ответы ))
-
NeoNox:
vladsu, меня любопытство замучало, что ты в ПС написал таког что нельзя было в форуме, а, поделись?
Для тебя точно ничего нового, просто не хотелось спамеров плодить. Но если тебе уж так интерестно, могу переслать копию.
-
Нет не надо (;
Да и спамерам от понимания системы авторизации при нынешней документированности мейлсерверов точно ничего нового не будет.
-
Net::SMTP_auth сила )) отправил письмо через него и в логе весь разговор клиента с сервером ))
-
ну письма отправлять получается но вот всетаки разобратся до конца охота с этим смтп и авторизацией ))
вот кусок разговора с сервером который Net::SMTP_auth записал
...
>>> EHLO localhost.localdomain
<<< 250-mail2.nthost.ru. Preved, krosavcheg! :)
<<< 250-PIPELINING
<<< 250-8BITMIME
<<< 250-SIZE 10485760
<<< 250 AUTH LOGIN PLAIN CRAM-MD5
>>> AUTH CRAM-MD5
<<< 334 PDE5NDU4LjExNDk2NzYzNTVAbWFpbDIubnRob3N0LnJ1Pg==
>>> YWRtaW5AaXJvbjI2LnJ1IDcxYmIzODg3YzBlZjgyMzJjYWI0OWM5YjZlNTM3MWE1
<<< 235 ok, go ahead (#2.0.0)
...
как я понял CRAM-MD5 это чтото вроде метода которым инфа какаето (логин с паролем наверное) шифруется в длинный набор символов на нерусском языке
как мона этот ответ <<< 334 PDE5NDU4LjExNDk2NzYzNTVAbWFpbDIubnRob3N0LnJ1Pg== от сервера привести в человеческий вид чтоб узнать что он хочет
ну вот еще есть догадка одна )) первые 21 сомволов которые скрипт с Net::SMTP_auth отвечает серверу после AUTH CRAM-MD5 всегда одинаковые я вот и подумал что в localhost.localdomain тоже 21 символ )) как мона такие пачки символов расшифровывать? где чаво почитать про это мона? ниче в яндексе ненашел ... а на сайтах нерусей все не по русски ((
-
09h:
ак мона этот ответ <<< 334 PDE5NDU4LjExNDk2NzYzNTVAbWFpbDIubnRob3N0LnJ1Pg== от сервера привести в человеческий вид
Нет.
09h:
ниче в яндексе ненашел
Уж не знаю как Вы ищете, попробуйте "алгоритм шифрования md5" так.
-
хмм... ну если эта хтука назад не переводится никак тогда как мона узнать что надо после такого ответа от сервера сказать ему?
чтото вроде >>> YWRtaW5AaXJvbjI2LnJ1IDcxYmIzODg3YzBlZjgyMzJjYWI0OWM5YjZlNTM3MWE1 первые 21 символ вроде понял что передается ... а дальше что? гдето ведь это описано будет