Forum Webscript.Ru

Программирование => Perl => Тема начата: Yaroslav от 05 Июня 2005, 19:33:15

Название: send mail
Отправлено: Yaroslav от 05 Июня 2005, 19:33:15
вот дождался количество мыл растет (уже 250) и браузер пока всем отправит сообщения загибается :( подскажите чаво нибудь плс.
отправка происходит:

open(AL,"$allmails");
foreach () { chomp;
  open (MAIL, "|/usr/sbin/sendmail -t");
  print MAIL "To: $_\\n";
  print MAIL "From: $mymail\\n";
  print MAIL "Content-Type: text/html; charset=windows-1251\\n";
  print MAIL "Subject: $url\\n\\n";
  print MAIL "$text\\n";
}
close (AL);

&view;


даже если сначала поставить &view; ,результат не меняется...
Название: send mail
Отправлено: frenky от 06 Июня 2005, 00:29:36
ну а ты раздели  на блоки по 100 мыл
Название: send mail
Отправлено: Yaroslav от 06 Июня 2005, 14:10:08
это как?
и что изменится?
Название: send mail
Отправлено: Yaroslav от 06 Июня 2005, 14:16:43
нашел тут что то о прогресивном человечестве и о том что оно уже давно использует Net::SMTP и MIME::Entity.
пошлите куда нибудь почитать об этом побольше.
Название: send mail
Отправлено: cr4ck3r от 06 Июня 2005, 16:36:40
http://search.cpan.org/~gbarr/libnet-1.19/Net/SMTP.pm
http://search.cpan.org/search?query=Mime&mode=all
Название: send mail
Отправлено: Yaroslav от 08 Июня 2005, 13:30:06
подумавши и посоветовавшись с (ondr, спасибо!), сделал так:
создаются списки по 50 мыл и через крон запускаются черз определенное время. также к каждому списку создается и текст нужного сообщения. запускаемый скрипт ищет файлы с разширением "*.txt" берет по его номеру сообщение и разссылает. после чего соответственно оба файла удаляются.
вопрос в следующем. как проверить на наличие файлов "*.txt".
я тут набросал, но что то не получается...

#!/usr/bin/perl -w
##################################
$mailprog="/usr/sbin/sendmail -t";
##################################

@filename = glob("*.txt");

if ($filename ne "") {
  ($num,undef)=split(/\\./,$filename[0]);
  open (MSG, "$num.msg");
  @msg=;
  close (MSG);
  $one=shift(@msg);

  open(AL, "$filename[0]");
  foreach () {
    open (MAIL, "|$mailprog");
    print MAIL "To: $_";
    print MAIL "From: my\\@mail\\n";
    print MAIL "Content-Type: text/html; charset=windows-1251\\n";
    print MAIL "Subject: $one\\n";
    print MAIL @msg;
  }
  close (AL);

unlink <$num.txt>;
unlink <$num.msg>;
}
else { print "no file"; }
Название: send mail
Отправлено: AnnA от 08 Июня 2005, 13:39:23
вот хотя бы так:

opendir (S,$dir) or die "Cannot read this directory $dir:  $!";
@files = grep (/\\.txt/i,readdir S); closedir(S);
foreach (@files){
       if (-s $_) {
           ..........
           } else { print \'no files\' }
       }
Название: send mail
Отправлено: Yaroslav от 08 Июня 2005, 14:03:23
извиняюсь, получилось так. если есть замечания, буду благодарен :)

#!/usr/bin/perl -w
##################################
$mailprog="/usr/sbin/sendmail -t";
##################################

if (@filename = glob("*.txt")) {
  ($num,undef)=split(/\\./,$filename[0]);
  open (MSG, "$num.msg");
  @msg=;
  close (MSG);
  $one=shift(@msg);

  open(AL, "$filename[0]");
  foreach () {
    open (MAIL, "|$mailprog");
    print MAIL "To: $_";
    print MAIL "From: my\\@mail\\n";
    print MAIL "Content-Type: text/html; charset=windows-1251\\n";
    print MAIL "Subject: $one\\n";
    print MAIL @msg;
  }
  close (AL);

  unlink <$num.txt>;
  unlink <$num.msg>;
}
else { print "no file"; }
Название: send mail
Отправлено: commander от 08 Июня 2005, 15:33:51
Yaroslav
 
Цитировать
если есть замечания, буду благодарен

use strict;