ich habe ein problem.
wenn ich mit folgendem perl script einen newsletter an alle emails aus der datenbank schicken will, nimmt er immer bloß 56 aus der datenbank.
in den datenbankzeilen (54-59) ist nirgends ein fehler drin.
wer hat hilfe?
Code: Select all
#!/usr/bin/perl -w
#use strict;
#use cgi;
#####Modul fuer Datenbankanbindung####
use DBI;
#####Datenbankname, Tabelle, Spalte, User, Password, Mailprogramm####
$dbname="irgendeine";
$table="irgendeine";
$column="email";
#$column1="user";
$user="meinuser";
$passwd="meinpass";
$mailprog="/usr/sbin/sendmail";
$i=0;
#####Datenbank Konnektierung####
$dbh=DBI->connect("DBI:mysql:$dbname", $user, $passwd) || die "Kann keine Verbindung zum MySQL-Server aufbauen: $DBI::errstrn";
#####Datenbankabfrage####
$sth=$dbh->prepare("select $column from $table");
#####Ausfuehrung der Anfrage####
$sth->execute || die "Kann Abfrage nicht ausführen: $DBI::errstrn";
##### Ergebnis in Array @mail schreiben####
while($mails = $sth->fetchrow_array()){
$mail[$i]=$mails."n";
$i++
}
#$i=0;
#####Datenbankabfrage####
#$sth=$dbh->prepare("select $column1 from $table");
#####Ausfuehrung der Anfrage####
#$sth->execute || die "Kann Abfrage nicht ausführen: $DBI::errstrn";
##### Ergebnis in Array @mail schreiben####
#while($name = $sth->fetchrow_array()){
# $namen[$i]=$name."n";
# $i++
#}
#####Datenbankverbindung trennen####
$sth->finish;
$dbh->disconnect;
#####Ã?berprüfung auf @ in mailaddresse####
$j=0;
foreach(@mail){
if( $_ =~ /@/ ) {
$newmail[$j] = $_;
$j++;
}
}
#####Laenge des Arrays####
$laenge=@newmail;
#####Versenden der Mails####
#for ($i=0;$i<=$laenge-1;$i++){
#To: #$newmail[$i]
#print MAIL "Hallo $namen[$i]nn";
for ($i=0;$i<=0;$i++){
open(MAIL,"|$mailprog -t") || die "Kann nicht öffnen $mailprog!n";
print MAIL "To: xx@xx.xxn";
print MAIL "From: xx.xx.xx<xx@xx.xx>n";
print MAIL "Subject: Newsletternn";
print MAIL "Hallo usernn";
print MAIL "___________________n";
print MAIL "xx see youn";
close(MAIL);
$a=$i+1;
print "done $a von $laengen";
}
danke
conrad
