package M; use DBI; use Net::SMTP; sub new { my $class = shift; bless($self, $class); $self->{DBH} = DBI->connect("xxxx","xxxx","xxxx") or die "can't connect\n"; ### (1) $self->{SMTP} = Net::SMTP->new("mail.test.com"); return $self; } sub get_list { my $self = shift; my @list; my $sth = $self->{DBH}->prepare(qq{select email from uses}); my ($email); $sth->bind_columns(undef, \$email); push @list,$email while ($sth->fetch); $sth->finish; $self->{DBH}->disconnect; return \@list; } sub send_mail { my($self,$to) = @_; ### (2) $self->{SMTP} = Net::SMTP->new("mail.test.com"); $self->{SMTP}->mail("ttsdf@sdf.com"); $self->{SMTP}->to($to); $self->{SMTP}->data(); $self->{SMTP}->datasend('From: ttsdf@sdf.com'); $self->{SMTP}->datasend("\n"); $self->{SMTP}->datasend('To: '.$to); $self->{SMTP}->datasend("\n"); $self->{SMTP}->datasend('Content-type:text/html;Charset=utf8'); $self->{SMTP}->datasend("\n"); $self->{SMTP}->datasend("Subject: $title"); $self->{SMTP}->datasend("\n\n"); $self->{SMTP}->datasend("hello\n"); $self->{SMTP}->dataend(); ### (3) $self->{SMTP}->quit; } sub over { my $self = shift; ### (4) $self->{SMTP}->quit; } 1; #### use M; my $m = new M(); for my $adr (@$m->get_list) { $m->send_mail($adr); sleep(1) ; #sleep one second } $m->over;