DeWitt: Problem bei Multipart-Mail mit Sonderzeichen

Beitrag lesen

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 >>