Hallo,ich habe eine Bitte :
Ich habe da ein Script gebastelt, daß mir an eine Liste von Empfängern jeweils einen Text nach dem anderen schickt. Das läuft auch recht gut, solange ich das mit sendmail mache (der auskommentierte Teil des Scripts ab Zeile 92.
Nun will ich aber HTML-Mails versenden und nutze MIME::Lite.pm
Doch irgendwo ist der Fehler drin, es kommen immer Fehlermeldungen a la
"Name "main::footer" used only once: possible typo at test.pl line 86.
Name "main::header" used only once: possible typo at test.pl line 86." je nachdem, wo ich einfache oder doppelte Anführungszeichen setze.
Kann mir einer einen Tip geben, wo der Fehler liegt ? (Ich kopiere hier das ganze Script rein, der MIME:Lite - Teil beginnt ab Zeile 80.
Danke im Voraus !!!
Thomas
#! /usr/bin/perl -w
my $admin='meineemailadresse';
my $sendmail='/usr/sbin/sendmail';
use MIME::Lite;
my $directory="automatic";
# chop $directory;
my $textdb='./'.$directory.'/texte.db';
my $adressdb='./'.$directory.'/adressdatenbank.db';
my $head='./'.$directory.'/header';
my $foot='./'.$directory.'/footer';
my $from='./'.$directory.'/from';
my @bodyname;
my $texlen='0';
open(TEXT,$textdb); #text.db-Format lfd.Nummer 0-xxx
my @text=<TEXT>; # Subject-Zeile
close(TEXT); # Dateiname des Bodys
my $texl=@text;
for (my $i1=0;$i1<$texl;++$i1)
{
push(@textnr, $text[$i1]);
push(@subject, $text[++$i1]);
++$i1;
if ($text[$i1]) {
$textbody='./'.$directory.'/'.$text[$i1];
chomp $textbody;
push(@bodyname, $textbody);
++$texlen;
}
}
open(FOOTER,$foot);
my @footer=<FOOTER>;
close(FOOTER);
open(HEADER,$head);
my @header=<HEADER>;
close(HEADER);
open(FROM,$from);
my $fromhead=<FROM>;
close(FROM);
open(ADRESSEN,$adressdb); #Adress.db-Format eMail@domain.tld
my @adr=<ADRESSEN>; # Status im Seminar
close(ADRESSEN); # Status 0=keine Mail bekommen
my $adrl=@adr;
for (my $i2=0;$i2<$adrl;++$i2)
{
push(@email, $adr[$i2]);
push(@stat, $adr[++$i2]);
}
my $adrlen=$adrl/2;
### Warnung an Admin, falls beim nächsten Mal in Text fehlt !
open(ADRESSES,">$adressdb");
open(LOGBOOK,">>automatic/BACKUP/LOGBOOK");
for (my $z=0;$z<$adrlen;++$z)
{
if ($email[$z]=~ /\S\@.+?\..+/) { #ist eMail gültiges Format ?
$status=$stat[$z];
if ($stat[$z] ne "\n"){
if ($textnr[$stat[$z]] ne "\n"){
if ($stat[$z]<=$textnr[$stat[$z]]) { #ist Text für diesen Status da ?
if ($stat[$z]!=53) {
open(BODY,$bodyname[$stat[$z]]);
@body=<BODY>;
close(BODY);
$message = MIME::Lite->new(
From =>'$from',
To =>"$email[$z]",
Subject=>"$subject[$stat[$z]]",
Type =>'text/html',
Data =>"$header $body $footer",
);
$message->send;
#open(MAIL,"|$sendmail -t");
# print MAIL "From: $fromhead\n";
# print MAIL "To: $email[$z]\n";
# print MAIL "MIME-Version 1.0\n";
# print MAIL "Content-type:text/html; charset=iso8859-1\n";
# print MAIL "Subject:$subject[$stat[$z]]\n";
# print MAIL "@header\n";
# print MAIL "@body\n\n";
# print MAIL "@footer\n";#
#close(MAIL);
}
++ $status;
print LOGBOOK "BP 1 -- $email[$z] Text $status bekommen\n";
}
}}
if ($status==$texlen){
$warnflag='1';
}
print ADRESSES "$email[$z]$status\n";
}}
close(ADRESSES);
close(LOGBOOK);
system ("date >> automatic/BACKUP/headerlog" );
system ("cat automatic/header >> automatic/BACKUP/headerlog" );
system ("cp automatic/header-standard-leer automatic/header");
print "\n\n Mailversand ausgeführt\n\n\n\n\n";
### Warnung an Admin, falls beim nächsten Mal in Text fehlt !
if ($warnflag) {
open(MAIL,"|$sendmail -t");
print MAIL "From: EvaMailer\n";
print MAIL "To: $admin\n";
print MAIL "Subject:Warnung von Mailscript1 : Text reicht beim nächsten Versand nicht aus !\n";
print MAIL "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n";
print MAIL "WARNUNG von Mailscript :\nDer Text reicht für den nächsten Versand der Bibellese nicht aus\n";
print MAIL "Bitte neuen Text hinzufügen unter
<Verzeichnis>/$directory/text.db\n\n";
print MAIL "@footer\n";
close(MAIL);
}
Datum: 18.12.2006-15:57
