|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : HB 2:5020/400 16 Jul 2001 23:48:45 To : All Subject : Re: Как можно ускорить отправку через SMTP -------------------------------------------------------------------------------- Sasha Rudenko wrote in <995306632@p16.f57.n468.z2.FidoNet.ftn>... >Юзаю Net::SMTP Hапрасно. perldoc -q send mail не пробовали? А очень поучительно, должен вам сказать. А кусочек маленький я даже процитировать не поленюсь: Avoid raw SMTP commands. There are many reasons to use a mail transport agent like sendmail. These include queueing, MX records, and security. Чем более низкоуровневые модули использовать, тем больше геморроя. Лучше (гораздо! лучше) использовать (программу) sendmail. Если дело под Win32 и sendmail нет, то (модуль) Mail::Sendmail > вот кусочек, пускаю с командной строки > что бы видно было какое письмо уходит > >#!perl -w >use Net::SMTP; >open DATA, "email.dat"; >@ALL=<DATA>; >close DATA; >open DATA, "data.dat"; >@MSG=<DATA>; >close DATA; >print "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nProgress:\n"; > >foreach $key (@ALL){ Hапрасно вы в цикле 1 письмо многим рассылаете. Это ж сумасшедший трафик. Hужно либо всем сразу посылать, либо (если SMTP-сервер не позволяет по такому кол-ву адресов сразу посылать) разбивать "всех" на порции по 10-100 человек (в завис. от того, сколько адресатов SMTP-сервер позволяет). Соответственно, трафик уменьшится почти в 10-100 раз. >$smtp = Net::SMTP->new('smtp.host',Hello => 'Hello'); > >$smtp->mail($ENV{USER}); >$smtp->to($key); > >$smtp->data(); >$smtp->datasend("To: Name <$key>\n"); >$smtp->datasend("From: From <mail\@net.com>\n"); >$smtp->datasend("Subject: Perl SMTP subs\n"); >$smtp->datasend("\n"); Ужас. Во-первых, вот так и появляются уродливые письма, не соответствующие никаким спецификациям. Без Date, без Message-ID (хорошо, если SMTP сервер его добавит!), без Content-type, без Content-transfer-encoding (или у вас все строго по RFC 822, т. е. подразумевается us-ascii и 7bit, никакой кириллицы, никакой псевдографики ?). Во-вторых, вы разбили посылку 60 байт на 4 посылки. Какая у вас проблема? Медленно? Hу, если так сделать, то, пожалуй, еще медленнее будет: $smtp->datasend("T"); $smtp->datasend("o"); $smtp->datasend(":"); $smtp->datasend(" "); $smtp->datasend("N"); $smtp->datasend("a"); $smtp->datasend("m"); $smtp->datasend("e"); и т. д. >foreach $key2 (@MSG){ > $smtp->datasend($key2); >} Ужас. >$smtp->dataend(); >$smtp->quit; >print "Send to: $key"; ^ Уже sent >но вот что-то долго отправляет, письма вообще понтовые по 1-2к да и линия до >SMTP 10Mbit/s А отправляет по 3-4 сек письмо :( >можно ли как ускорить этот процес? Для начала -- переписать все по-человечески, а там и будет видно, что дальше ускорять. -- HB mailto:npecca@yahoo.com?subject=Usenet --- ifmail v.2.15dev5 * Origin: VoronezhSvyazInform ISP (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/6307fd0ce25b.html, оценка из 5, голосов 10
|