Mehrere Attachments mit PERL verschicken
Christian Schnagl
- perl
Hallo Forum,
im Archiv steht nur wie man eine Datei als Anhang verschicken kann. Dies funktioniert bei mir auch wunderbar.
Ich möchte aber 2 Dateien anhängen und kriegs einfach nicht hin. Der unten stehende Code ist der Teil des Scripts, der für den Versand zuständig ist. xxx steht für den Pfad, unter dem die Datei liegt. Die Dateien sind dort vorhanden. Wenn ich nun das Script aufrufe, wird nur $file2 angehängt. $file wird komplett ignoriert.
Was mache ich falsch? Ist die boundary an der falschen Stelle? Muß ich am Content-Type was ändern und wenn ja - was? Ist vielleicht bei EXE-Dateien etwas zu beachten?
Wie gesagt, sendmail (Linux RedHat) funktioniert, die Files existieren und liegen beide im selben Pfad.
Vielen Dank im Vorraus
Christian Schnagl
$file="datei.exe";
$file2="datei.zip";
$attachedFile="/xxx/".$file;
$attachedName=$file;
$attachedFile="/xxx/".$file2;
$attachedName=$file2;
$mimeprog='/usr/bin/mimencode';
$boundary = "----=_NextPart";
@attachedFile = $mimeprog $attachedFile $attachedName
;
@attachedFile2 = $mimeprog $attachedFile2 $attachedName2
;
$from="existierende.email@adresse.com";
$to="existierende.email@adresse.com";
open(MAIL, "/usr/lib/sendmail -t") die "Content-type: text/text\n\nCan't open /usr/lib/sendmail!";
print MAIL "To: $to\n";
print MAIL "From: $from\n";
print MAIL "Subject: Betreff\n";
print MAIL "Content-Type: multipart/mixed;\n";
print MAIL " boundary="$boundary"\n\n";
print MAIL "--$boundary\n";
print MAIL "Content-Type: text/plain\n";
print MAIL " charset="iso-8859-1"\n";
print MAIL "Content-Transfer-Encoding: 7bit\n\n";
print MAIL "Anlagen: $attachedName\n\n";
print MAIL "--$boundary\n";
print MAIL "Content-Type: image/jpeg\n";
print MAIL " name="$attachedName"\n";
print MAIL "Content-Transfer-Encoding: base64\n";
print MAIL "Content-Disposition: attachment;\n";
print MAIL " filename="$attachedName"\n\n";
print MAIL @attachedFile;
print MAIL "\n\n";
print MAIL "--$boundary\n";
print MAIL "Content-Type: image/jpeg\n";
print MAIL " name="$attachedName2"\n";
print MAIL "Content-Transfer-Encoding: base64\n";
print MAIL "Content-Disposition: attachment;\n";
print MAIL " filename="$attachedName2"\n\n";
print MAIL @attachedFile2;
print MAIL "\n\n";
print MAIL "--$boundary\n";
close MAIL;
$attachedFile="/xxx/".$file;
$attachedName=$file;
$attachedFile="/xxx/".$file2;
$attachedName=$file2;
Das sieht verdächtig dahach aus, als ob Du hier mit dem zweiten Attachment das erste überschreibst.
@attachedFile =
$mimeprog $attachedFile $attachedName
;
@attachedFile2 =$mimeprog $attachedFile2 $attachedName2
;
Hier verwendest Du eine Variable "$attachedName2", die weiter oben nicht definiert wurde.
Solche Fehler würdest Du mit "perl -w" und "use strict;" automatisch finden.
Ups,
ich hab den Code mehrmals durchgelesen und es einfach nicht gesehen. Sorry für die Frage und DANKE für die Antwort.
Es funktioniert übrigens jetzt einwandfrei!
Gruß
Christian
PS: Zumindest ist jetzt im Archiv ein Code für mehrere Attachments... :-)