Hallo SELFHTML-Gemeinde,
Ein Skript, das ich eigentlich schon seit längerem verwende, und das bis jetzt eigentlich auch problem funktioniert hat, macht plötzlich Zicken. Da ich den Fehler partout nicht finde, wollte ich mal hier um Rat fragen - manchmal sieht man ja einfach den Wald vor lauter Bäumen nicht.
Mein Problem ist, dass Sonderzeichen in einer Plain-Text-Mail problemlos angezeigt werden, in einer Multipart-Email jedoch nicht:
Plain-Text:
===CODE ANFANG====
To: dew1tt@gmx.de
From: foo@bar.de (Foo Bar)
Subject: Test
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Das gärende Öl fließt über die Äcker
===CODE ENDE====
Multipart-Mail:
===CODE ANFANG====
To: dew1tt@gmx.de
From: foo@bar.de (Foo Bar)
Subject: DTest
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
Content-Type: multipart/alternative; "boundary=++webmailboundary_alt++"
This is a multi-part message in MIME format.
--++webmailboundary_alt++
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: quoted-printable
Das gdrende Vl flie_t |ber die Dcker
--++webmailboundary_alt++
Content-Type: text/html; charset="ISO-8859-1"
Content-Transfer-Encoding: quoted-printable
Das gdrende Vl flie_t |ber die Dcker
--++webmailboundary_alt++--
-------
===CODE ENDE====
Die uninteressanten Header-Angaben, die während dem Mailtransfer hinzukommen, habe ich entfernt. Was mich wundert, sind allerdings die Striche ("-------") am Ende der Multipart-Mail, da diese auch nicht aus meinem Programm stammen.
Hier der Ausschnitt aus dem objektorientierten Modul, das den Mailversand übernimmt:
===CODE ANFANG====
my $boundary_alt = "++webmailboundary_alt++";
# Mail-Programm starten
if ( open(MAIL,"|".$this->{'mailprog'}." -t") ) {
#Mailheader
print MAIL "To: ".join(", ",@{$this->{'to'}})."\n";
print MAIL "From: ".$this->{'from'};
print MAIL " (".$this->{'namefrom'}.")" if exists($this->{'namefrom'});
print MAIL "\n";
print MAIL "Cc: ".join(", ",@{$this->{'cc'}})."\n" if exists($this->{'cc'});
print MAIL "Bcc: ".join(", ",@{$this->{'bcc'}})."\n" if exists($this->{'bcc'});
print MAIL "Subject: ".$this->{'subject'}."\n";
print MAIL "Content-Transfer-Encoding: quoted-printable\n";
print MAIL "MIME-Version: 1.0\n";
#Mail-Subheader, wenn HTML-Teil vorhanden
if ( exists($this->{'htmltext'}) ) {
print MAIL "Content-Type: multipart alternative; \"boundary=$boundary_alt\"\n\n";
print MAIL "This is a multi-part message in MIME format.\n";
#Plain-Text
print MAIL "--$boundary_alt\n";
}
#Plain-Text
print MAIL "Content-Type: text/plain; charset=\"ISO-8859-1\"\n";
print MAIL "Content-Transfer-Encoding: quoted-printable\n\n";
print MAIL $this->{'text'}."\n\n";
#Mail-Subheader, wenn HTML-Teil vorhanden
if ( exists($this->{'htmltext'}) ) {
#HTML-Text
print MAIL "--$boundary_alt\n";
print MAIL "Content-Type: text/html; charset=\"ISO-8859-1\"\n";
print MAIL "Content-Transfer-Encoding: quoted-printable\n\n";
print MAIL $this->{'htmltext'};
#Mail-Boundary schließen
print MAIL "\n--$boundary_alt--";
}
close(MAIL);
return 1;
}
else {
# [...] Fehlerbehandung
return undef;
}
===CODE ENDE====
Vielleicht findet jemand den Fehler/das Problem? Ich lasse mich auch gerne über die korrekte Angabe des "Content-Transfer-Encoding" belehren, da ich diese Angabe einfach von anderen Multipart-Mails "abgeschaut" habe ;).
Ciao,
David //aka DeWitt
selfcode ie:% fl:( br:< va:) ls:} fo:| rl:( n4:° ss:) de:] js:| ch:] sh:( mo:| zu:(
<< Life is just a moment in eternity, yet every life echoes there >>